Skip to content

Instantly share code, notes, and snippets.

@martindurant
Last active June 8, 2023 16:47
Show Gist options
  • Save martindurant/0ab2fd6a13a34e93c1995afa2e2cc59b to your computer and use it in GitHub Desktop.
Save martindurant/0ab2fd6a13a34e93c1995afa2e2cc59b to your computer and use it in GitHub Desktop.
What the rewrite is for
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "2332101b",
"metadata": {},
"outputs": [
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
" var py_version = '3.1.1'.replace('rc', '-rc.');\n",
" var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n",
" var reloading = false;\n",
" var Bokeh = root.Bokeh;\n",
" var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
"\n",
" if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",
" root._bokeh_timeout = Date.now() + 5000;\n",
" root._bokeh_failed_load = false;\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" try {\n",
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
" if (callback != null)\n",
" callback();\n",
" });\n",
" } finally {\n",
" delete root._bokeh_onload_callbacks;\n",
" }\n",
" console.debug(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",
" if (css_urls == null) css_urls = [];\n",
" if (js_urls == null) js_urls = [];\n",
" if (js_modules == null) js_modules = [];\n",
" if (js_exports == null) js_exports = {};\n",
"\n",
" root._bokeh_onload_callbacks.push(callback);\n",
"\n",
" if (root._bokeh_is_loading > 0) {\n",
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" if (!reloading) {\n",
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" }\n",
"\n",
" function on_load() {\n",
" root._bokeh_is_loading--;\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
" run_callbacks()\n",
" }\n",
" }\n",
" window._bokeh_on_load = on_load\n",
"\n",
" function on_error() {\n",
" console.error(\"failed to load \" + url);\n",
" }\n",
"\n",
" var skip = [];\n",
" if (window.requirejs) {\n",
" window.requirejs.config({'packages': {}, 'paths': {'ace': '//cdnjs.cloudflare.com/ajax/libs/ace/1.4.7', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'ace/ext-language_tools': {'deps': ['ace/ace']}, 'ace/ext-modelist': {'deps': ['ace/ace']}, 'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n",
" require([\"ace/ace\"], function(ace) {\n",
"\twindow.ace = ace\n",
"\ton_load()\n",
" })\n",
" require([\"ace/ext-language_tools\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"ace/ext-modelist\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel\"], function(jsPanel) {\n",
"\twindow.jsPanel = jsPanel\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-modal\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-tooltip\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-hint\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-layout\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-contextmenu\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-dock\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"gridstack\"], function(GridStack) {\n",
"\twindow.GridStack = GridStack\n",
"\ton_load()\n",
" })\n",
" require([\"notyf\"], function() {\n",
"\ton_load()\n",
" })\n",
" root._bokeh_is_loading = css_urls.length + 12;\n",
" } else {\n",
" root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",
" }\n",
"\n",
" var existing_stylesheets = []\n",
" var links = document.getElementsByTagName('link')\n",
" for (var i = 0; i < links.length; i++) {\n",
" var link = links[i]\n",
" if (link.href != null) {\n",
"\texisting_stylesheets.push(link.href)\n",
" }\n",
" }\n",
" for (var i = 0; i < css_urls.length; i++) {\n",
" var url = css_urls[i];\n",
" if (existing_stylesheets.indexOf(url) !== -1) {\n",
"\ton_load()\n",
"\tcontinue;\n",
" }\n",
" const element = document.createElement(\"link\");\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.rel = \"stylesheet\";\n",
" element.type = \"text/css\";\n",
" element.href = url;\n",
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
" document.body.appendChild(element);\n",
" } if (((window['ace'] !== undefined) && (!(window['ace'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } var existing_scripts = []\n",
" var scripts = document.getElementsByTagName('script')\n",
" for (var i = 0; i < scripts.length; i++) {\n",
" var script = scripts[i]\n",
" if (script.src != null) {\n",
"\texisting_scripts.push(script.src)\n",
" }\n",
" }\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
"\tif (!window.requirejs) {\n",
"\t on_load();\n",
"\t}\n",
"\tcontinue;\n",
" }\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.src = url;\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
" for (var i = 0; i < js_modules.length; i++) {\n",
" var url = js_modules[i];\n",
" if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
"\tif (!window.requirejs) {\n",
"\t on_load();\n",
"\t}\n",
"\tcontinue;\n",
" }\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.src = url;\n",
" element.type = \"module\";\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
" for (const name in js_exports) {\n",
" var url = js_exports[name];\n",
" if (skip.indexOf(url) >= 0 || root[name] != null) {\n",
"\tif (!window.requirejs) {\n",
"\t on_load();\n",
"\t}\n",
"\tcontinue;\n",
" }\n",
" var element = document.createElement('script');\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.type = \"module\";\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" element.textContent = `\n",
" import ${name} from \"${url}\"\n",
" window.${name} = ${name}\n",
" window._bokeh_on_load()\n",
" `\n",
" document.head.appendChild(element);\n",
" }\n",
" if (!js_urls.length && !js_modules.length) {\n",
" on_load()\n",
" }\n",
" };\n",
"\n",
" function inject_raw_css(css) {\n",
" const element = document.createElement(\"style\");\n",
" element.appendChild(document.createTextNode(css));\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" var js_urls = [\"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.1.1.min.js\", \"https://cdn.holoviz.org/panel/1.0.2/dist/panel.min.js\"];\n",
" var js_modules = [];\n",
" var js_exports = {};\n",
" var css_urls = [];\n",
" var inline_js = [ function(Bokeh) {\n",
" inject_raw_css(\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \");\n",
" }, function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
"function(Bokeh) {} // ensure no trailing comma for IE\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" if ((root.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i].call(root, root.Bokeh);\n",
" }\n",
" // Cache old bokeh versions\n",
" if (Bokeh != undefined && !reloading) {\n",
"\tvar NewBokeh = root.Bokeh;\n",
"\tif (Bokeh.versions === undefined) {\n",
"\t Bokeh.versions = new Map();\n",
"\t}\n",
"\tif (NewBokeh.version !== Bokeh.version) {\n",
"\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",
"\t}\n",
"\troot.Bokeh = Bokeh;\n",
" }} else if (Date.now() < root._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!root._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" root._bokeh_failed_load = true;\n",
" }\n",
" root._bokeh_is_initializing = false\n",
" }\n",
"\n",
" function load_or_wait() {\n",
" // Implement a backoff loop that tries to ensure we do not load multiple\n",
" // versions of Bokeh and its dependencies at the same time.\n",
" // In recent versions we use the root._bokeh_is_initializing flag\n",
" // to determine whether there is an ongoing attempt to initialize\n",
" // bokeh, however for backward compatibility we also try to ensure\n",
" // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",
" // before older versions are fully initialized.\n",
" if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",
" root._bokeh_is_initializing = false;\n",
" root._bokeh_onload_callbacks = undefined;\n",
" console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",
" load_or_wait();\n",
" } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",
" setTimeout(load_or_wait, 100);\n",
" } else {\n",
" Bokeh = root.Bokeh;\n",
" bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
" root._bokeh_is_initializing = true\n",
" root._bokeh_onload_callbacks = []\n",
" if (!reloading && (!bokeh_loaded || is_dev)) {\n",
"\troot.Bokeh = undefined;\n",
" }\n",
" load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",
"\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
"\trun_inline_js();\n",
" });\n",
" }\n",
" }\n",
" // Give older versions of the autoload script a head-start to ensure\n",
" // they initialize before we start loading newer version.\n",
" setTimeout(load_or_wait, 100)\n",
"}(window));"
],
"application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.1.1'.replace('rc', '-rc.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = false;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'ace': '//cdnjs.cloudflare.com/ajax/libs/ace/1.4.7', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'ace/ext-language_tools': {'deps': ['ace/ace']}, 'ace/ext-modelist': {'deps': ['ace/ace']}, 'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"ace/ace\"], function(ace) {\n\twindow.ace = ace\n\ton_load()\n })\n require([\"ace/ext-language_tools\"], function() {\n\ton_load()\n })\n require([\"ace/ext-modelist\"], function() {\n\ton_load()\n })\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 12;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['ace'] !== undefined) && (!(window['ace'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.1.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.1.1.min.js\", \"https://cdn.holoviz.org/panel/1.0.2/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \");\n }, function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
" window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
"}\n",
"\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",
" } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
" google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
" var messages = comm.messages[Symbol.asyncIterator]();\n",
" function processIteratorResult(result) {\n",
" var message = result.value;\n",
" console.log(message)\n",
" var content = {data: message.data, comm_id};\n",
" var buffers = []\n",
" for (var buffer of message.buffers || []) {\n",
" buffers.push(new DataView(buffer))\n",
" }\n",
" var metadata = message.metadata || {};\n",
" var msg = {content, buffers, metadata}\n",
" msg_handler(msg);\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" return messages.next().then(processIteratorResult);\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",
" } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
" var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
" comm_promise.then((comm) => {\n",
" window.PyViz.comms[comm_id] = comm;\n",
" if (msg_handler) {\n",
" var messages = comm.messages[Symbol.asyncIterator]();\n",
" function processIteratorResult(result) {\n",
" var message = result.value;\n",
" var content = {data: message.data};\n",
" var metadata = message.metadata || {comm_id};\n",
" var msg = {content, metadata}\n",
" msg_handler(msg);\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" }) \n",
" var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
" return comm_promise.then((comm) => {\n",
" comm.send(data, metadata, buffers, disposeOnDone);\n",
" });\n",
" };\n",
" var comm = {\n",
" send: sendClosure\n",
" };\n",
" }\n",
" window.PyViz.comms[comm_id] = comm;\n",
" return comm;\n",
" }\n",
" window.PyViz.comm_manager = new JupyterCommManager();\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 == undefined) || (!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",
" var html_node = toinsert[nchildren-1].children[0];\n",
" html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var scripts = [];\n",
" var nodelist = html_node.querySelectorAll(\"script\");\n",
" for (var i in nodelist) {\n",
" if (nodelist.hasOwnProperty(i)) {\n",
" scripts.push(nodelist[i])\n",
" }\n",
" }\n",
"\n",
" scripts.forEach( function (oldScript) {\n",
" var newScript = document.createElement(\"script\");\n",
" var attrs = [];\n",
" var nodemap = oldScript.attributes;\n",
" for (var j in nodemap) {\n",
" if (nodemap.hasOwnProperty(j)) {\n",
" attrs.push(nodemap[j])\n",
" }\n",
" }\n",
" attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
" newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
" oldScript.parentNode.replaceChild(newScript, oldScript);\n",
" });\n",
" if (JS_MIME_TYPE in output.data) {\n",
" toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
" }\n",
" output_area._hv_plot_id = id;\n",
" if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
" window.PyViz.plot_index[id] = Bokeh.index[id];\n",
" } else {\n",
" window.PyViz.plot_index[id] = null;\n",
" }\n",
" } else 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].childNodes[1].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",
"/**\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",
" var server_id = handle.cell.output_area._bokeh_server_id;\n",
" if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
" var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
" if (server_id !== null) {\n",
" comm.send({event_type: 'server_delete', 'id': server_id});\n",
" return;\n",
" } else if (comm !== null) {\n",
" comm.send({event_type: 'delete', 'id': id});\n",
" }\n",
" delete PyViz.plot_index[id];\n",
" if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
" var doc = window.Bokeh.index[id].model.document\n",
" doc.clear();\n",
" const i = window.Bokeh.documents.indexOf(doc);\n",
" if (i > -1) {\n",
" window.Bokeh.documents.splice(i, 1);\n",
" }\n",
" }\n",
"}\n",
"\n",
"/**\n",
" * Handle kernel restart event\n",
" */\n",
"function handle_kernel_cleanup(event, handle) {\n",
" delete PyViz.comms[\"hv-extension-comm\"];\n",
" window.PyViz.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);\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"
],
"application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\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 } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\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 } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\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 == undefined) || (!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 var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else 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].childNodes[1].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/**\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 var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.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);\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"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<style>*[data-root-id],\n",
"*[data-root-id] > * {\n",
" box-sizing: border-box;\n",
" font-family: var(--jp-ui-font-family);\n",
" font-size: var(--jp-ui-font-size1);\n",
" color: var(--jp-ui-font-color1);\n",
"}\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var force = true;\n",
" var py_version = '3.1.1'.replace('rc', '-rc.');\n",
" var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n",
" var reloading = true;\n",
" var Bokeh = root.Bokeh;\n",
" var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
"\n",
" if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",
" root._bokeh_timeout = Date.now() + 5000;\n",
" root._bokeh_failed_load = false;\n",
" }\n",
"\n",
" function run_callbacks() {\n",
" try {\n",
" root._bokeh_onload_callbacks.forEach(function(callback) {\n",
" if (callback != null)\n",
" callback();\n",
" });\n",
" } finally {\n",
" delete root._bokeh_onload_callbacks;\n",
" }\n",
" console.debug(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",
" if (css_urls == null) css_urls = [];\n",
" if (js_urls == null) js_urls = [];\n",
" if (js_modules == null) js_modules = [];\n",
" if (js_exports == null) js_exports = {};\n",
"\n",
" root._bokeh_onload_callbacks.push(callback);\n",
"\n",
" if (root._bokeh_is_loading > 0) {\n",
" console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" if (!reloading) {\n",
" console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" }\n",
"\n",
" function on_load() {\n",
" root._bokeh_is_loading--;\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",
" run_callbacks()\n",
" }\n",
" }\n",
" window._bokeh_on_load = on_load\n",
"\n",
" function on_error() {\n",
" console.error(\"failed to load \" + url);\n",
" }\n",
"\n",
" var skip = [];\n",
" if (window.requirejs) {\n",
" window.requirejs.config({'packages': {}, 'paths': {'ace': '//cdnjs.cloudflare.com/ajax/libs/ace/1.4.7', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'ace/ext-language_tools': {'deps': ['ace/ace']}, 'ace/ext-modelist': {'deps': ['ace/ace']}, 'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n",
" require([\"ace/ace\"], function(ace) {\n",
"\twindow.ace = ace\n",
"\ton_load()\n",
" })\n",
" require([\"ace/ext-language_tools\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"ace/ext-modelist\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel\"], function(jsPanel) {\n",
"\twindow.jsPanel = jsPanel\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-modal\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-tooltip\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-hint\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-layout\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-contextmenu\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"jspanel-dock\"], function() {\n",
"\ton_load()\n",
" })\n",
" require([\"gridstack\"], function(GridStack) {\n",
"\twindow.GridStack = GridStack\n",
"\ton_load()\n",
" })\n",
" require([\"notyf\"], function() {\n",
"\ton_load()\n",
" })\n",
" root._bokeh_is_loading = css_urls.length + 12;\n",
" } else {\n",
" root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",
" }\n",
"\n",
" var existing_stylesheets = []\n",
" var links = document.getElementsByTagName('link')\n",
" for (var i = 0; i < links.length; i++) {\n",
" var link = links[i]\n",
" if (link.href != null) {\n",
"\texisting_stylesheets.push(link.href)\n",
" }\n",
" }\n",
" for (var i = 0; i < css_urls.length; i++) {\n",
" var url = css_urls[i];\n",
" if (existing_stylesheets.indexOf(url) !== -1) {\n",
"\ton_load()\n",
"\tcontinue;\n",
" }\n",
" const element = document.createElement(\"link\");\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.rel = \"stylesheet\";\n",
" element.type = \"text/css\";\n",
" element.href = url;\n",
" console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",
" document.body.appendChild(element);\n",
" } if (((window['ace'] !== undefined) && (!(window['ace'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n",
" for (var i = 0; i < urls.length; i++) {\n",
" skip.push(urls[i])\n",
" }\n",
" } var existing_scripts = []\n",
" var scripts = document.getElementsByTagName('script')\n",
" for (var i = 0; i < scripts.length; i++) {\n",
" var script = scripts[i]\n",
" if (script.src != null) {\n",
"\texisting_scripts.push(script.src)\n",
" }\n",
" }\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
"\tif (!window.requirejs) {\n",
"\t on_load();\n",
"\t}\n",
"\tcontinue;\n",
" }\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.src = url;\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
" for (var i = 0; i < js_modules.length; i++) {\n",
" var url = js_modules[i];\n",
" if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",
"\tif (!window.requirejs) {\n",
"\t on_load();\n",
"\t}\n",
"\tcontinue;\n",
" }\n",
" var element = document.createElement('script');\n",
" element.onload = on_load;\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.src = url;\n",
" element.type = \"module\";\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.head.appendChild(element);\n",
" }\n",
" for (const name in js_exports) {\n",
" var url = js_exports[name];\n",
" if (skip.indexOf(url) >= 0 || root[name] != null) {\n",
"\tif (!window.requirejs) {\n",
"\t on_load();\n",
"\t}\n",
"\tcontinue;\n",
" }\n",
" var element = document.createElement('script');\n",
" element.onerror = on_error;\n",
" element.async = false;\n",
" element.type = \"module\";\n",
" console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" element.textContent = `\n",
" import ${name} from \"${url}\"\n",
" window.${name} = ${name}\n",
" window._bokeh_on_load()\n",
" `\n",
" document.head.appendChild(element);\n",
" }\n",
" if (!js_urls.length && !js_modules.length) {\n",
" on_load()\n",
" }\n",
" };\n",
"\n",
" function inject_raw_css(css) {\n",
" const element = document.createElement(\"style\");\n",
" element.appendChild(document.createTextNode(css));\n",
" document.body.appendChild(element);\n",
" }\n",
"\n",
" var js_urls = [\"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js\"];\n",
" var js_modules = [];\n",
" var js_exports = {};\n",
" var css_urls = [];\n",
" var inline_js = [ function(Bokeh) {\n",
" inject_raw_css(\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \");\n",
" }, function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
"function(Bokeh) {} // ensure no trailing comma for IE\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" if ((root.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i].call(root, root.Bokeh);\n",
" }\n",
" // Cache old bokeh versions\n",
" if (Bokeh != undefined && !reloading) {\n",
"\tvar NewBokeh = root.Bokeh;\n",
"\tif (Bokeh.versions === undefined) {\n",
"\t Bokeh.versions = new Map();\n",
"\t}\n",
"\tif (NewBokeh.version !== Bokeh.version) {\n",
"\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",
"\t}\n",
"\troot.Bokeh = Bokeh;\n",
" }} else if (Date.now() < root._bokeh_timeout) {\n",
" setTimeout(run_inline_js, 100);\n",
" } else if (!root._bokeh_failed_load) {\n",
" console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",
" root._bokeh_failed_load = true;\n",
" }\n",
" root._bokeh_is_initializing = false\n",
" }\n",
"\n",
" function load_or_wait() {\n",
" // Implement a backoff loop that tries to ensure we do not load multiple\n",
" // versions of Bokeh and its dependencies at the same time.\n",
" // In recent versions we use the root._bokeh_is_initializing flag\n",
" // to determine whether there is an ongoing attempt to initialize\n",
" // bokeh, however for backward compatibility we also try to ensure\n",
" // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",
" // before older versions are fully initialized.\n",
" if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",
" root._bokeh_is_initializing = false;\n",
" root._bokeh_onload_callbacks = undefined;\n",
" console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",
" load_or_wait();\n",
" } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",
" setTimeout(load_or_wait, 100);\n",
" } else {\n",
" Bokeh = root.Bokeh;\n",
" bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",
" root._bokeh_is_initializing = true\n",
" root._bokeh_onload_callbacks = []\n",
" if (!reloading && (!bokeh_loaded || is_dev)) {\n",
"\troot.Bokeh = undefined;\n",
" }\n",
" load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",
"\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",
"\trun_inline_js();\n",
" });\n",
" }\n",
" }\n",
" // Give older versions of the autoload script a head-start to ensure\n",
" // they initialize before we start loading newer version.\n",
" setTimeout(load_or_wait, 100)\n",
"}(window));"
],
"application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.1.1'.replace('rc', '-rc.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = true;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'ace': '//cdnjs.cloudflare.com/ajax/libs/ace/1.4.7', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'ace/ext-language_tools': {'deps': ['ace/ace']}, 'ace/ext-modelist': {'deps': ['ace/ace']}, 'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"ace/ace\"], function(ace) {\n\twindow.ace = ace\n\ton_load()\n })\n require([\"ace/ext-language_tools\"], function() {\n\ton_load()\n })\n require([\"ace/ext-modelist\"], function() {\n\ton_load()\n })\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 12;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['ace'] !== undefined) && (!(window['ace'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.0.2/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.0.2/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ace.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-language_tools.js\", \"https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.11/ext-modelist.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \");\n }, function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",
" window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",
"}\n",
"\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",
" } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
" google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",
" var messages = comm.messages[Symbol.asyncIterator]();\n",
" function processIteratorResult(result) {\n",
" var message = result.value;\n",
" console.log(message)\n",
" var content = {data: message.data, comm_id};\n",
" var buffers = []\n",
" for (var buffer of message.buffers || []) {\n",
" buffers.push(new DataView(buffer))\n",
" }\n",
" var metadata = message.metadata || {};\n",
" var msg = {content, buffers, metadata}\n",
" msg_handler(msg);\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" return messages.next().then(processIteratorResult);\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",
" } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",
" var comm_promise = google.colab.kernel.comms.open(comm_id)\n",
" comm_promise.then((comm) => {\n",
" window.PyViz.comms[comm_id] = comm;\n",
" if (msg_handler) {\n",
" var messages = comm.messages[Symbol.asyncIterator]();\n",
" function processIteratorResult(result) {\n",
" var message = result.value;\n",
" var content = {data: message.data};\n",
" var metadata = message.metadata || {comm_id};\n",
" var msg = {content, metadata}\n",
" msg_handler(msg);\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" return messages.next().then(processIteratorResult);\n",
" }\n",
" }) \n",
" var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",
" return comm_promise.then((comm) => {\n",
" comm.send(data, metadata, buffers, disposeOnDone);\n",
" });\n",
" };\n",
" var comm = {\n",
" send: sendClosure\n",
" };\n",
" }\n",
" window.PyViz.comms[comm_id] = comm;\n",
" return comm;\n",
" }\n",
" window.PyViz.comm_manager = new JupyterCommManager();\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 == undefined) || (!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",
" var html_node = toinsert[nchildren-1].children[0];\n",
" html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var scripts = [];\n",
" var nodelist = html_node.querySelectorAll(\"script\");\n",
" for (var i in nodelist) {\n",
" if (nodelist.hasOwnProperty(i)) {\n",
" scripts.push(nodelist[i])\n",
" }\n",
" }\n",
"\n",
" scripts.forEach( function (oldScript) {\n",
" var newScript = document.createElement(\"script\");\n",
" var attrs = [];\n",
" var nodemap = oldScript.attributes;\n",
" for (var j in nodemap) {\n",
" if (nodemap.hasOwnProperty(j)) {\n",
" attrs.push(nodemap[j])\n",
" }\n",
" }\n",
" attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",
" newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",
" oldScript.parentNode.replaceChild(newScript, oldScript);\n",
" });\n",
" if (JS_MIME_TYPE in output.data) {\n",
" toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",
" }\n",
" output_area._hv_plot_id = id;\n",
" if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",
" window.PyViz.plot_index[id] = Bokeh.index[id];\n",
" } else {\n",
" window.PyViz.plot_index[id] = null;\n",
" }\n",
" } else 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].childNodes[1].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",
"/**\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",
" var server_id = handle.cell.output_area._bokeh_server_id;\n",
" if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",
" var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",
" if (server_id !== null) {\n",
" comm.send({event_type: 'server_delete', 'id': server_id});\n",
" return;\n",
" } else if (comm !== null) {\n",
" comm.send({event_type: 'delete', 'id': id});\n",
" }\n",
" delete PyViz.plot_index[id];\n",
" if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",
" var doc = window.Bokeh.index[id].model.document\n",
" doc.clear();\n",
" const i = window.Bokeh.documents.indexOf(doc);\n",
" if (i > -1) {\n",
" window.Bokeh.documents.splice(i, 1);\n",
" }\n",
" }\n",
"}\n",
"\n",
"/**\n",
" * Handle kernel restart event\n",
" */\n",
"function handle_kernel_cleanup(event, handle) {\n",
" delete PyViz.comms[\"hv-extension-comm\"];\n",
" window.PyViz.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);\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"
],
"application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\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 } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\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 } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\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 == undefined) || (!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 var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else 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].childNodes[1].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/**\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 var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.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);\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"
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<style>*[data-root-id],\n",
"*[data-root-id] > * {\n",
" box-sizing: border-box;\n",
" font-family: var(--jp-ui-font-family);\n",
" font-size: var(--jp-ui-font-size1);\n",
" color: var(--jp-ui-font-color1);\n",
"}\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import intake.readers\n",
"intake.output_notebook()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b7cae65c",
"metadata": {},
"outputs": [],
"source": [
"# some spoof arguments to make the pandas call more complex\n",
"path = \"file:///Users/mdurant/code/intake-examples/us_crime/data/crime.csv\"\n",
"kw = {\"usecols\": None}"
]
},
{
"cell_type": "markdown",
"id": "f8210884",
"metadata": {},
"source": [
"Here is what the user knows, a way to load data:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "32838800",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Year</th>\n",
" <th>Population</th>\n",
" <th>Violent crime total</th>\n",
" <th>Murder and nonnegligent Manslaughter</th>\n",
" <th>Legacy rape /1</th>\n",
" <th>Revised rape /2</th>\n",
" <th>Robbery</th>\n",
" <th>Aggravated assault</th>\n",
" <th>Property crime total</th>\n",
" <th>Burglary</th>\n",
" <th>...</th>\n",
" <th>Violent Crime rate</th>\n",
" <th>Murder and nonnegligent manslaughter rate</th>\n",
" <th>Legacy rape rate /1</th>\n",
" <th>Revised rape rate /2</th>\n",
" <th>Robbery rate</th>\n",
" <th>Aggravated assault rate</th>\n",
" <th>Property crime rate</th>\n",
" <th>Burglary rate</th>\n",
" <th>Larceny-theft rate</th>\n",
" <th>Motor vehicle theft rate</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1960</td>\n",
" <td>179323175</td>\n",
" <td>288460</td>\n",
" <td>9110</td>\n",
" <td>17190</td>\n",
" <td>NaN</td>\n",
" <td>107840</td>\n",
" <td>154320</td>\n",
" <td>3095700</td>\n",
" <td>912100</td>\n",
" <td>...</td>\n",
" <td>160.9</td>\n",
" <td>5.1</td>\n",
" <td>9.6</td>\n",
" <td>NaN</td>\n",
" <td>60.1</td>\n",
" <td>86.1</td>\n",
" <td>1726.3</td>\n",
" <td>508.6</td>\n",
" <td>1034.7</td>\n",
" <td>183.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1961</td>\n",
" <td>182992000</td>\n",
" <td>289390</td>\n",
" <td>8740</td>\n",
" <td>17220</td>\n",
" <td>NaN</td>\n",
" <td>106670</td>\n",
" <td>156760</td>\n",
" <td>3198600</td>\n",
" <td>949600</td>\n",
" <td>...</td>\n",
" <td>158.1</td>\n",
" <td>4.8</td>\n",
" <td>9.4</td>\n",
" <td>NaN</td>\n",
" <td>58.3</td>\n",
" <td>85.7</td>\n",
" <td>1747.9</td>\n",
" <td>518.9</td>\n",
" <td>1045.4</td>\n",
" <td>183.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1962</td>\n",
" <td>185771000</td>\n",
" <td>301510</td>\n",
" <td>8530</td>\n",
" <td>17550</td>\n",
" <td>NaN</td>\n",
" <td>110860</td>\n",
" <td>164570</td>\n",
" <td>3450700</td>\n",
" <td>994300</td>\n",
" <td>...</td>\n",
" <td>162.3</td>\n",
" <td>4.6</td>\n",
" <td>9.4</td>\n",
" <td>NaN</td>\n",
" <td>59.7</td>\n",
" <td>88.6</td>\n",
" <td>1857.5</td>\n",
" <td>535.2</td>\n",
" <td>1124.8</td>\n",
" <td>197.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1963</td>\n",
" <td>188483000</td>\n",
" <td>316970</td>\n",
" <td>8640</td>\n",
" <td>17650</td>\n",
" <td>NaN</td>\n",
" <td>116470</td>\n",
" <td>174210</td>\n",
" <td>3792500</td>\n",
" <td>1086400</td>\n",
" <td>...</td>\n",
" <td>168.2</td>\n",
" <td>4.6</td>\n",
" <td>9.4</td>\n",
" <td>NaN</td>\n",
" <td>61.8</td>\n",
" <td>92.4</td>\n",
" <td>2012.1</td>\n",
" <td>576.4</td>\n",
" <td>1219.1</td>\n",
" <td>216.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1964</td>\n",
" <td>191141000</td>\n",
" <td>364220</td>\n",
" <td>9360</td>\n",
" <td>21420</td>\n",
" <td>NaN</td>\n",
" <td>130390</td>\n",
" <td>203050</td>\n",
" <td>4200400</td>\n",
" <td>1213200</td>\n",
" <td>...</td>\n",
" <td>190.6</td>\n",
" <td>4.9</td>\n",
" <td>11.2</td>\n",
" <td>NaN</td>\n",
" <td>68.2</td>\n",
" <td>106.2</td>\n",
" <td>2197.5</td>\n",
" <td>634.7</td>\n",
" <td>1315.5</td>\n",
" <td>247.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1965</td>\n",
" <td>193526000</td>\n",
" <td>387390</td>\n",
" <td>9960</td>\n",
" <td>23410</td>\n",
" <td>NaN</td>\n",
" <td>138690</td>\n",
" <td>215330</td>\n",
" <td>4352000</td>\n",
" <td>1282500</td>\n",
" <td>...</td>\n",
" <td>200.2</td>\n",
" <td>5.1</td>\n",
" <td>12.1</td>\n",
" <td>NaN</td>\n",
" <td>71.7</td>\n",
" <td>111.3</td>\n",
" <td>2248.8</td>\n",
" <td>662.7</td>\n",
" <td>1329.3</td>\n",
" <td>256.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1966</td>\n",
" <td>195576000</td>\n",
" <td>430180</td>\n",
" <td>11040</td>\n",
" <td>25820</td>\n",
" <td>NaN</td>\n",
" <td>157990</td>\n",
" <td>235330</td>\n",
" <td>4793300</td>\n",
" <td>1410100</td>\n",
" <td>...</td>\n",
" <td>220.0</td>\n",
" <td>5.6</td>\n",
" <td>13.2</td>\n",
" <td>NaN</td>\n",
" <td>80.8</td>\n",
" <td>120.3</td>\n",
" <td>2450.9</td>\n",
" <td>721.0</td>\n",
" <td>1442.9</td>\n",
" <td>286.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1967</td>\n",
" <td>197457000</td>\n",
" <td>499930</td>\n",
" <td>12240</td>\n",
" <td>27620</td>\n",
" <td>NaN</td>\n",
" <td>202910</td>\n",
" <td>257160</td>\n",
" <td>5403500</td>\n",
" <td>1632100</td>\n",
" <td>...</td>\n",
" <td>253.2</td>\n",
" <td>6.2</td>\n",
" <td>14.0</td>\n",
" <td>NaN</td>\n",
" <td>102.8</td>\n",
" <td>130.2</td>\n",
" <td>2736.5</td>\n",
" <td>826.6</td>\n",
" <td>1575.8</td>\n",
" <td>334.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1968</td>\n",
" <td>199399000</td>\n",
" <td>595010</td>\n",
" <td>13800</td>\n",
" <td>31670</td>\n",
" <td>NaN</td>\n",
" <td>262840</td>\n",
" <td>286700</td>\n",
" <td>6125200</td>\n",
" <td>1858900</td>\n",
" <td>...</td>\n",
" <td>298.4</td>\n",
" <td>6.9</td>\n",
" <td>15.9</td>\n",
" <td>NaN</td>\n",
" <td>131.8</td>\n",
" <td>143.8</td>\n",
" <td>3071.8</td>\n",
" <td>932.3</td>\n",
" <td>1746.6</td>\n",
" <td>393.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1969</td>\n",
" <td>201385000</td>\n",
" <td>661870</td>\n",
" <td>14760</td>\n",
" <td>37170</td>\n",
" <td>NaN</td>\n",
" <td>298850</td>\n",
" <td>311090</td>\n",
" <td>6749000</td>\n",
" <td>1981900</td>\n",
" <td>...</td>\n",
" <td>328.7</td>\n",
" <td>7.3</td>\n",
" <td>18.5</td>\n",
" <td>NaN</td>\n",
" <td>148.4</td>\n",
" <td>154.5</td>\n",
" <td>3351.3</td>\n",
" <td>984.1</td>\n",
" <td>1930.9</td>\n",
" <td>436.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1970</td>\n",
" <td>203235298</td>\n",
" <td>738820</td>\n",
" <td>16000</td>\n",
" <td>37990</td>\n",
" <td>NaN</td>\n",
" <td>349860</td>\n",
" <td>334970</td>\n",
" <td>7359200</td>\n",
" <td>2205000</td>\n",
" <td>...</td>\n",
" <td>363.5</td>\n",
" <td>7.9</td>\n",
" <td>18.7</td>\n",
" <td>NaN</td>\n",
" <td>172.1</td>\n",
" <td>164.8</td>\n",
" <td>3621.0</td>\n",
" <td>1084.9</td>\n",
" <td>2079.3</td>\n",
" <td>456.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1971</td>\n",
" <td>206212000</td>\n",
" <td>816500</td>\n",
" <td>17780</td>\n",
" <td>42260</td>\n",
" <td>NaN</td>\n",
" <td>387700</td>\n",
" <td>368760</td>\n",
" <td>7771700</td>\n",
" <td>2399300</td>\n",
" <td>...</td>\n",
" <td>396.0</td>\n",
" <td>8.6</td>\n",
" <td>20.5</td>\n",
" <td>NaN</td>\n",
" <td>188.0</td>\n",
" <td>178.8</td>\n",
" <td>3768.8</td>\n",
" <td>1163.5</td>\n",
" <td>2145.5</td>\n",
" <td>459.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1972</td>\n",
" <td>208230000</td>\n",
" <td>834900</td>\n",
" <td>18670</td>\n",
" <td>46850</td>\n",
" <td>NaN</td>\n",
" <td>376290</td>\n",
" <td>393090</td>\n",
" <td>7413900</td>\n",
" <td>2375500</td>\n",
" <td>...</td>\n",
" <td>401.0</td>\n",
" <td>9.0</td>\n",
" <td>22.5</td>\n",
" <td>NaN</td>\n",
" <td>180.7</td>\n",
" <td>188.8</td>\n",
" <td>3560.4</td>\n",
" <td>1140.8</td>\n",
" <td>1993.6</td>\n",
" <td>426.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>1973</td>\n",
" <td>209851000</td>\n",
" <td>875910</td>\n",
" <td>19640</td>\n",
" <td>51400</td>\n",
" <td>NaN</td>\n",
" <td>384220</td>\n",
" <td>420650</td>\n",
" <td>7842200</td>\n",
" <td>2565500</td>\n",
" <td>...</td>\n",
" <td>417.4</td>\n",
" <td>9.4</td>\n",
" <td>24.5</td>\n",
" <td>NaN</td>\n",
" <td>183.1</td>\n",
" <td>200.5</td>\n",
" <td>3737.0</td>\n",
" <td>1222.5</td>\n",
" <td>2071.9</td>\n",
" <td>442.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>1974</td>\n",
" <td>211392000</td>\n",
" <td>974720</td>\n",
" <td>20710</td>\n",
" <td>55400</td>\n",
" <td>NaN</td>\n",
" <td>442400</td>\n",
" <td>456210</td>\n",
" <td>9278700</td>\n",
" <td>3039200</td>\n",
" <td>...</td>\n",
" <td>461.1</td>\n",
" <td>9.8</td>\n",
" <td>26.2</td>\n",
" <td>NaN</td>\n",
" <td>209.3</td>\n",
" <td>215.8</td>\n",
" <td>4389.3</td>\n",
" <td>1437.7</td>\n",
" <td>2489.5</td>\n",
" <td>462.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>1975</td>\n",
" <td>213124000</td>\n",
" <td>1039710</td>\n",
" <td>20510</td>\n",
" <td>56090</td>\n",
" <td>NaN</td>\n",
" <td>470500</td>\n",
" <td>492620</td>\n",
" <td>10252700</td>\n",
" <td>3265300</td>\n",
" <td>...</td>\n",
" <td>487.8</td>\n",
" <td>9.6</td>\n",
" <td>26.3</td>\n",
" <td>NaN</td>\n",
" <td>220.8</td>\n",
" <td>231.1</td>\n",
" <td>4810.7</td>\n",
" <td>1532.1</td>\n",
" <td>2804.8</td>\n",
" <td>473.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>1976</td>\n",
" <td>214659000</td>\n",
" <td>1004210</td>\n",
" <td>18780</td>\n",
" <td>57080</td>\n",
" <td>NaN</td>\n",
" <td>427810</td>\n",
" <td>500530</td>\n",
" <td>10345500</td>\n",
" <td>3108700</td>\n",
" <td>...</td>\n",
" <td>467.8</td>\n",
" <td>8.7</td>\n",
" <td>26.6</td>\n",
" <td>NaN</td>\n",
" <td>199.3</td>\n",
" <td>233.2</td>\n",
" <td>4819.5</td>\n",
" <td>1448.2</td>\n",
" <td>2921.3</td>\n",
" <td>450.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>1977</td>\n",
" <td>216332000</td>\n",
" <td>1029580</td>\n",
" <td>19120</td>\n",
" <td>63500</td>\n",
" <td>NaN</td>\n",
" <td>412610</td>\n",
" <td>534350</td>\n",
" <td>9955000</td>\n",
" <td>3071500</td>\n",
" <td>...</td>\n",
" <td>475.9</td>\n",
" <td>8.8</td>\n",
" <td>29.4</td>\n",
" <td>NaN</td>\n",
" <td>190.7</td>\n",
" <td>247.0</td>\n",
" <td>4601.7</td>\n",
" <td>1419.8</td>\n",
" <td>2729.9</td>\n",
" <td>451.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>1978</td>\n",
" <td>218059000</td>\n",
" <td>1085550</td>\n",
" <td>19560</td>\n",
" <td>67610</td>\n",
" <td>NaN</td>\n",
" <td>426930</td>\n",
" <td>571460</td>\n",
" <td>10123400</td>\n",
" <td>3128300</td>\n",
" <td>...</td>\n",
" <td>497.8</td>\n",
" <td>9.0</td>\n",
" <td>31.0</td>\n",
" <td>NaN</td>\n",
" <td>195.8</td>\n",
" <td>262.1</td>\n",
" <td>4642.5</td>\n",
" <td>1434.6</td>\n",
" <td>2747.4</td>\n",
" <td>460.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>1979</td>\n",
" <td>220099000</td>\n",
" <td>1208030</td>\n",
" <td>21460</td>\n",
" <td>76390</td>\n",
" <td>NaN</td>\n",
" <td>480700</td>\n",
" <td>629480</td>\n",
" <td>11041500</td>\n",
" <td>3327700</td>\n",
" <td>...</td>\n",
" <td>548.9</td>\n",
" <td>9.8</td>\n",
" <td>34.7</td>\n",
" <td>NaN</td>\n",
" <td>218.4</td>\n",
" <td>286.0</td>\n",
" <td>5016.6</td>\n",
" <td>1511.9</td>\n",
" <td>2999.1</td>\n",
" <td>505.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>1980</td>\n",
" <td>225349264</td>\n",
" <td>1344520</td>\n",
" <td>23040</td>\n",
" <td>82990</td>\n",
" <td>NaN</td>\n",
" <td>565840</td>\n",
" <td>672650</td>\n",
" <td>12063700</td>\n",
" <td>3795200</td>\n",
" <td>...</td>\n",
" <td>596.6</td>\n",
" <td>10.2</td>\n",
" <td>36.8</td>\n",
" <td>NaN</td>\n",
" <td>251.1</td>\n",
" <td>298.5</td>\n",
" <td>5353.3</td>\n",
" <td>1684.1</td>\n",
" <td>3167.0</td>\n",
" <td>502.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>1981</td>\n",
" <td>229465714</td>\n",
" <td>1361820</td>\n",
" <td>22520</td>\n",
" <td>82500</td>\n",
" <td>NaN</td>\n",
" <td>592910</td>\n",
" <td>663900</td>\n",
" <td>12061900</td>\n",
" <td>3779700</td>\n",
" <td>...</td>\n",
" <td>593.5</td>\n",
" <td>9.8</td>\n",
" <td>36.0</td>\n",
" <td>NaN</td>\n",
" <td>258.4</td>\n",
" <td>289.3</td>\n",
" <td>5256.5</td>\n",
" <td>1647.2</td>\n",
" <td>3135.3</td>\n",
" <td>474.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>1982</td>\n",
" <td>231664458</td>\n",
" <td>1322390</td>\n",
" <td>21010</td>\n",
" <td>78770</td>\n",
" <td>NaN</td>\n",
" <td>553130</td>\n",
" <td>669480</td>\n",
" <td>11652000</td>\n",
" <td>3447100</td>\n",
" <td>...</td>\n",
" <td>570.8</td>\n",
" <td>9.1</td>\n",
" <td>34.0</td>\n",
" <td>NaN</td>\n",
" <td>238.8</td>\n",
" <td>289.0</td>\n",
" <td>5029.7</td>\n",
" <td>1488.0</td>\n",
" <td>3083.1</td>\n",
" <td>458.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>1983</td>\n",
" <td>233791994</td>\n",
" <td>1258087</td>\n",
" <td>19308</td>\n",
" <td>78918</td>\n",
" <td>NaN</td>\n",
" <td>506567</td>\n",
" <td>653294</td>\n",
" <td>10850543</td>\n",
" <td>3129851</td>\n",
" <td>...</td>\n",
" <td>538.1</td>\n",
" <td>8.3</td>\n",
" <td>33.8</td>\n",
" <td>NaN</td>\n",
" <td>216.7</td>\n",
" <td>279.4</td>\n",
" <td>4641.1</td>\n",
" <td>1338.7</td>\n",
" <td>2871.3</td>\n",
" <td>431.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>1984</td>\n",
" <td>235824902</td>\n",
" <td>1273282</td>\n",
" <td>18692</td>\n",
" <td>84233</td>\n",
" <td>NaN</td>\n",
" <td>485008</td>\n",
" <td>685349</td>\n",
" <td>10608473</td>\n",
" <td>2984434</td>\n",
" <td>...</td>\n",
" <td>539.9</td>\n",
" <td>7.9</td>\n",
" <td>35.7</td>\n",
" <td>NaN</td>\n",
" <td>205.7</td>\n",
" <td>290.6</td>\n",
" <td>4498.5</td>\n",
" <td>1265.5</td>\n",
" <td>2795.2</td>\n",
" <td>437.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>1985</td>\n",
" <td>237923795</td>\n",
" <td>1327767</td>\n",
" <td>18976</td>\n",
" <td>87671</td>\n",
" <td>NaN</td>\n",
" <td>497874</td>\n",
" <td>723246</td>\n",
" <td>11102590</td>\n",
" <td>3073348</td>\n",
" <td>...</td>\n",
" <td>558.1</td>\n",
" <td>8.0</td>\n",
" <td>36.8</td>\n",
" <td>NaN</td>\n",
" <td>209.3</td>\n",
" <td>304.0</td>\n",
" <td>4666.4</td>\n",
" <td>1291.7</td>\n",
" <td>2911.2</td>\n",
" <td>463.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>1986</td>\n",
" <td>240132887</td>\n",
" <td>1489169</td>\n",
" <td>20613</td>\n",
" <td>91459</td>\n",
" <td>NaN</td>\n",
" <td>542775</td>\n",
" <td>834322</td>\n",
" <td>11722700</td>\n",
" <td>3241410</td>\n",
" <td>...</td>\n",
" <td>620.1</td>\n",
" <td>8.6</td>\n",
" <td>38.1</td>\n",
" <td>NaN</td>\n",
" <td>226.0</td>\n",
" <td>347.4</td>\n",
" <td>4881.8</td>\n",
" <td>1349.8</td>\n",
" <td>3022.1</td>\n",
" <td>509.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>1987</td>\n",
" <td>242288918</td>\n",
" <td>1483999</td>\n",
" <td>20096</td>\n",
" <td>91111</td>\n",
" <td>NaN</td>\n",
" <td>517704</td>\n",
" <td>855088</td>\n",
" <td>12024709</td>\n",
" <td>3236184</td>\n",
" <td>...</td>\n",
" <td>612.5</td>\n",
" <td>8.3</td>\n",
" <td>37.6</td>\n",
" <td>NaN</td>\n",
" <td>213.7</td>\n",
" <td>352.9</td>\n",
" <td>4963.0</td>\n",
" <td>1335.7</td>\n",
" <td>3095.4</td>\n",
" <td>531.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>1988</td>\n",
" <td>244498982</td>\n",
" <td>1566221</td>\n",
" <td>20675</td>\n",
" <td>92486</td>\n",
" <td>NaN</td>\n",
" <td>542968</td>\n",
" <td>910092</td>\n",
" <td>12356865</td>\n",
" <td>3218077</td>\n",
" <td>...</td>\n",
" <td>640.6</td>\n",
" <td>8.5</td>\n",
" <td>37.8</td>\n",
" <td>NaN</td>\n",
" <td>222.1</td>\n",
" <td>372.2</td>\n",
" <td>5054.0</td>\n",
" <td>1316.2</td>\n",
" <td>3151.7</td>\n",
" <td>586.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>1989</td>\n",
" <td>246819230</td>\n",
" <td>1646037</td>\n",
" <td>21500</td>\n",
" <td>94504</td>\n",
" <td>NaN</td>\n",
" <td>578326</td>\n",
" <td>951707</td>\n",
" <td>12605412</td>\n",
" <td>3168170</td>\n",
" <td>...</td>\n",
" <td>666.9</td>\n",
" <td>8.7</td>\n",
" <td>38.3</td>\n",
" <td>NaN</td>\n",
" <td>234.3</td>\n",
" <td>385.6</td>\n",
" <td>5107.1</td>\n",
" <td>1283.6</td>\n",
" <td>3189.6</td>\n",
" <td>634.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>1990</td>\n",
" <td>249464396</td>\n",
" <td>1820127</td>\n",
" <td>23438</td>\n",
" <td>102555</td>\n",
" <td>NaN</td>\n",
" <td>639271</td>\n",
" <td>1054863</td>\n",
" <td>12655486</td>\n",
" <td>3073909</td>\n",
" <td>...</td>\n",
" <td>729.6</td>\n",
" <td>9.4</td>\n",
" <td>41.1</td>\n",
" <td>NaN</td>\n",
" <td>256.3</td>\n",
" <td>422.9</td>\n",
" <td>5073.1</td>\n",
" <td>1232.2</td>\n",
" <td>3185.1</td>\n",
" <td>655.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>1991</td>\n",
" <td>252153092</td>\n",
" <td>1911767</td>\n",
" <td>24703</td>\n",
" <td>106593</td>\n",
" <td>NaN</td>\n",
" <td>687732</td>\n",
" <td>1092739</td>\n",
" <td>12961116</td>\n",
" <td>3157150</td>\n",
" <td>...</td>\n",
" <td>758.2</td>\n",
" <td>9.8</td>\n",
" <td>42.3</td>\n",
" <td>NaN</td>\n",
" <td>272.7</td>\n",
" <td>433.4</td>\n",
" <td>5140.2</td>\n",
" <td>1252.1</td>\n",
" <td>3229.1</td>\n",
" <td>659.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>1992</td>\n",
" <td>255029699</td>\n",
" <td>1932274</td>\n",
" <td>23760</td>\n",
" <td>109062</td>\n",
" <td>NaN</td>\n",
" <td>672478</td>\n",
" <td>1126974</td>\n",
" <td>12505917</td>\n",
" <td>2979884</td>\n",
" <td>...</td>\n",
" <td>757.7</td>\n",
" <td>9.3</td>\n",
" <td>42.8</td>\n",
" <td>NaN</td>\n",
" <td>263.7</td>\n",
" <td>441.9</td>\n",
" <td>4903.7</td>\n",
" <td>1168.4</td>\n",
" <td>3103.6</td>\n",
" <td>631.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>1993</td>\n",
" <td>257782608</td>\n",
" <td>1926017</td>\n",
" <td>24526</td>\n",
" <td>106014</td>\n",
" <td>NaN</td>\n",
" <td>659870</td>\n",
" <td>1135607</td>\n",
" <td>12218777</td>\n",
" <td>2834808</td>\n",
" <td>...</td>\n",
" <td>747.1</td>\n",
" <td>9.5</td>\n",
" <td>41.1</td>\n",
" <td>NaN</td>\n",
" <td>256.0</td>\n",
" <td>440.5</td>\n",
" <td>4740.0</td>\n",
" <td>1099.7</td>\n",
" <td>3033.9</td>\n",
" <td>606.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>1994</td>\n",
" <td>260327021</td>\n",
" <td>1857670</td>\n",
" <td>23326</td>\n",
" <td>102216</td>\n",
" <td>NaN</td>\n",
" <td>618949</td>\n",
" <td>1113179</td>\n",
" <td>12131873</td>\n",
" <td>2712774</td>\n",
" <td>...</td>\n",
" <td>713.6</td>\n",
" <td>9.0</td>\n",
" <td>39.3</td>\n",
" <td>NaN</td>\n",
" <td>237.8</td>\n",
" <td>427.6</td>\n",
" <td>4660.2</td>\n",
" <td>1042.1</td>\n",
" <td>3026.9</td>\n",
" <td>591.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>1995</td>\n",
" <td>262803276</td>\n",
" <td>1798792</td>\n",
" <td>21606</td>\n",
" <td>97470</td>\n",
" <td>NaN</td>\n",
" <td>580509</td>\n",
" <td>1099207</td>\n",
" <td>12063935</td>\n",
" <td>2593784</td>\n",
" <td>...</td>\n",
" <td>684.5</td>\n",
" <td>8.2</td>\n",
" <td>37.1</td>\n",
" <td>NaN</td>\n",
" <td>220.9</td>\n",
" <td>418.3</td>\n",
" <td>4590.5</td>\n",
" <td>987.0</td>\n",
" <td>3043.2</td>\n",
" <td>560.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>1996</td>\n",
" <td>265228572</td>\n",
" <td>1688540</td>\n",
" <td>19645</td>\n",
" <td>96252</td>\n",
" <td>NaN</td>\n",
" <td>535594</td>\n",
" <td>1037049</td>\n",
" <td>11805323</td>\n",
" <td>2506400</td>\n",
" <td>...</td>\n",
" <td>636.6</td>\n",
" <td>7.4</td>\n",
" <td>36.3</td>\n",
" <td>NaN</td>\n",
" <td>201.9</td>\n",
" <td>391.0</td>\n",
" <td>4451.0</td>\n",
" <td>945.0</td>\n",
" <td>2980.3</td>\n",
" <td>525.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>1997</td>\n",
" <td>267783607</td>\n",
" <td>1636096</td>\n",
" <td>18208</td>\n",
" <td>96153</td>\n",
" <td>NaN</td>\n",
" <td>498534</td>\n",
" <td>1023201</td>\n",
" <td>11558475</td>\n",
" <td>2460526</td>\n",
" <td>...</td>\n",
" <td>611.0</td>\n",
" <td>6.8</td>\n",
" <td>35.9</td>\n",
" <td>NaN</td>\n",
" <td>186.2</td>\n",
" <td>382.1</td>\n",
" <td>4316.3</td>\n",
" <td>918.8</td>\n",
" <td>2891.8</td>\n",
" <td>505.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>1998</td>\n",
" <td>270248003</td>\n",
" <td>1533887</td>\n",
" <td>16974</td>\n",
" <td>93144</td>\n",
" <td>NaN</td>\n",
" <td>447186</td>\n",
" <td>976583</td>\n",
" <td>10951827</td>\n",
" <td>2332735</td>\n",
" <td>...</td>\n",
" <td>567.6</td>\n",
" <td>6.3</td>\n",
" <td>34.5</td>\n",
" <td>NaN</td>\n",
" <td>165.5</td>\n",
" <td>361.4</td>\n",
" <td>4052.5</td>\n",
" <td>863.2</td>\n",
" <td>2729.5</td>\n",
" <td>459.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>1999</td>\n",
" <td>272690813</td>\n",
" <td>1426044</td>\n",
" <td>15522</td>\n",
" <td>89411</td>\n",
" <td>NaN</td>\n",
" <td>409371</td>\n",
" <td>911740</td>\n",
" <td>10208334</td>\n",
" <td>2100739</td>\n",
" <td>...</td>\n",
" <td>523.0</td>\n",
" <td>5.7</td>\n",
" <td>32.8</td>\n",
" <td>NaN</td>\n",
" <td>150.1</td>\n",
" <td>334.3</td>\n",
" <td>3743.6</td>\n",
" <td>770.4</td>\n",
" <td>2550.7</td>\n",
" <td>422.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>2000</td>\n",
" <td>281421906</td>\n",
" <td>1425486</td>\n",
" <td>15586</td>\n",
" <td>90178</td>\n",
" <td>NaN</td>\n",
" <td>408016</td>\n",
" <td>911706</td>\n",
" <td>10182584</td>\n",
" <td>2050992</td>\n",
" <td>...</td>\n",
" <td>506.5</td>\n",
" <td>5.5</td>\n",
" <td>32.0</td>\n",
" <td>NaN</td>\n",
" <td>145.0</td>\n",
" <td>324.0</td>\n",
" <td>3618.3</td>\n",
" <td>728.8</td>\n",
" <td>2477.3</td>\n",
" <td>412.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>2001</td>\n",
" <td>285317559</td>\n",
" <td>1439480</td>\n",
" <td>16037</td>\n",
" <td>90863</td>\n",
" <td>NaN</td>\n",
" <td>423557</td>\n",
" <td>909023</td>\n",
" <td>10437189</td>\n",
" <td>2116531</td>\n",
" <td>...</td>\n",
" <td>504.5</td>\n",
" <td>5.6</td>\n",
" <td>31.8</td>\n",
" <td>NaN</td>\n",
" <td>148.5</td>\n",
" <td>318.6</td>\n",
" <td>3658.1</td>\n",
" <td>741.8</td>\n",
" <td>2485.7</td>\n",
" <td>430.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>2002</td>\n",
" <td>287973924</td>\n",
" <td>1423677</td>\n",
" <td>16229</td>\n",
" <td>95235</td>\n",
" <td>NaN</td>\n",
" <td>420806</td>\n",
" <td>891407</td>\n",
" <td>10455277</td>\n",
" <td>2151252</td>\n",
" <td>...</td>\n",
" <td>494.4</td>\n",
" <td>5.6</td>\n",
" <td>33.1</td>\n",
" <td>NaN</td>\n",
" <td>146.1</td>\n",
" <td>309.5</td>\n",
" <td>3630.6</td>\n",
" <td>747.0</td>\n",
" <td>2450.7</td>\n",
" <td>432.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>2003</td>\n",
" <td>290788976</td>\n",
" <td>1383676</td>\n",
" <td>16528</td>\n",
" <td>93883</td>\n",
" <td>NaN</td>\n",
" <td>414235</td>\n",
" <td>859030</td>\n",
" <td>10442862</td>\n",
" <td>2154834</td>\n",
" <td>...</td>\n",
" <td>475.8</td>\n",
" <td>5.7</td>\n",
" <td>32.3</td>\n",
" <td>NaN</td>\n",
" <td>142.5</td>\n",
" <td>295.4</td>\n",
" <td>3591.2</td>\n",
" <td>741.0</td>\n",
" <td>2416.5</td>\n",
" <td>433.7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>2004</td>\n",
" <td>293656842</td>\n",
" <td>1360088</td>\n",
" <td>16148</td>\n",
" <td>95089</td>\n",
" <td>NaN</td>\n",
" <td>401470</td>\n",
" <td>847381</td>\n",
" <td>10319386</td>\n",
" <td>2144446</td>\n",
" <td>...</td>\n",
" <td>463.2</td>\n",
" <td>5.5</td>\n",
" <td>32.4</td>\n",
" <td>NaN</td>\n",
" <td>136.7</td>\n",
" <td>288.6</td>\n",
" <td>3514.1</td>\n",
" <td>730.3</td>\n",
" <td>2362.3</td>\n",
" <td>421.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>2005</td>\n",
" <td>296507061</td>\n",
" <td>1390745</td>\n",
" <td>16740</td>\n",
" <td>94347</td>\n",
" <td>NaN</td>\n",
" <td>417438</td>\n",
" <td>862220</td>\n",
" <td>10174754</td>\n",
" <td>2155448</td>\n",
" <td>...</td>\n",
" <td>469.0</td>\n",
" <td>5.6</td>\n",
" <td>31.8</td>\n",
" <td>NaN</td>\n",
" <td>140.8</td>\n",
" <td>290.8</td>\n",
" <td>3431.5</td>\n",
" <td>726.9</td>\n",
" <td>2287.8</td>\n",
" <td>416.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>2006</td>\n",
" <td>299398484</td>\n",
" <td>1435123</td>\n",
" <td>17309</td>\n",
" <td>94472</td>\n",
" <td>NaN</td>\n",
" <td>449246</td>\n",
" <td>874096</td>\n",
" <td>10019601</td>\n",
" <td>2194993</td>\n",
" <td>...</td>\n",
" <td>479.3</td>\n",
" <td>5.8</td>\n",
" <td>31.6</td>\n",
" <td>NaN</td>\n",
" <td>150.0</td>\n",
" <td>292.0</td>\n",
" <td>3346.6</td>\n",
" <td>733.1</td>\n",
" <td>2213.2</td>\n",
" <td>400.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>2007</td>\n",
" <td>301621157</td>\n",
" <td>1422970</td>\n",
" <td>17128</td>\n",
" <td>92160</td>\n",
" <td>NaN</td>\n",
" <td>447324</td>\n",
" <td>866358</td>\n",
" <td>9882212</td>\n",
" <td>2190198</td>\n",
" <td>...</td>\n",
" <td>471.8</td>\n",
" <td>5.7</td>\n",
" <td>30.6</td>\n",
" <td>NaN</td>\n",
" <td>148.3</td>\n",
" <td>287.2</td>\n",
" <td>3276.4</td>\n",
" <td>726.1</td>\n",
" <td>2185.4</td>\n",
" <td>364.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>2008</td>\n",
" <td>304059724</td>\n",
" <td>1394461</td>\n",
" <td>16465</td>\n",
" <td>90750</td>\n",
" <td>NaN</td>\n",
" <td>443563</td>\n",
" <td>843683</td>\n",
" <td>9774152</td>\n",
" <td>2228887</td>\n",
" <td>...</td>\n",
" <td>458.6</td>\n",
" <td>5.4</td>\n",
" <td>29.8</td>\n",
" <td>NaN</td>\n",
" <td>145.9</td>\n",
" <td>277.5</td>\n",
" <td>3214.6</td>\n",
" <td>733.0</td>\n",
" <td>2166.1</td>\n",
" <td>315.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>2009</td>\n",
" <td>307006550</td>\n",
" <td>1325896</td>\n",
" <td>15399</td>\n",
" <td>89241</td>\n",
" <td>NaN</td>\n",
" <td>408742</td>\n",
" <td>812514</td>\n",
" <td>9337060</td>\n",
" <td>2203313</td>\n",
" <td>...</td>\n",
" <td>431.9</td>\n",
" <td>5.0</td>\n",
" <td>29.1</td>\n",
" <td>NaN</td>\n",
" <td>133.1</td>\n",
" <td>264.7</td>\n",
" <td>3041.3</td>\n",
" <td>717.7</td>\n",
" <td>2064.5</td>\n",
" <td>259.2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>2010</td>\n",
" <td>309330219</td>\n",
" <td>1251248</td>\n",
" <td>14722</td>\n",
" <td>85593</td>\n",
" <td>NaN</td>\n",
" <td>369089</td>\n",
" <td>781844</td>\n",
" <td>9112625</td>\n",
" <td>2168459</td>\n",
" <td>...</td>\n",
" <td>404.5</td>\n",
" <td>4.8</td>\n",
" <td>27.7</td>\n",
" <td>NaN</td>\n",
" <td>119.3</td>\n",
" <td>252.8</td>\n",
" <td>2945.9</td>\n",
" <td>701.0</td>\n",
" <td>2005.8</td>\n",
" <td>239.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>2011</td>\n",
" <td>311587816</td>\n",
" <td>1206031</td>\n",
" <td>14661</td>\n",
" <td>84175</td>\n",
" <td>NaN</td>\n",
" <td>354772</td>\n",
" <td>752423</td>\n",
" <td>9052743</td>\n",
" <td>2185140</td>\n",
" <td>...</td>\n",
" <td>387.1</td>\n",
" <td>4.7</td>\n",
" <td>27.0</td>\n",
" <td>NaN</td>\n",
" <td>113.9</td>\n",
" <td>241.5</td>\n",
" <td>2905.4</td>\n",
" <td>701.3</td>\n",
" <td>1974.1</td>\n",
" <td>230.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>2012</td>\n",
" <td>313873685</td>\n",
" <td>1217067</td>\n",
" <td>14866</td>\n",
" <td>85141</td>\n",
" <td>NaN</td>\n",
" <td>355051</td>\n",
" <td>762009</td>\n",
" <td>9001992</td>\n",
" <td>2109932</td>\n",
" <td>...</td>\n",
" <td>387.8</td>\n",
" <td>4.7</td>\n",
" <td>27.1</td>\n",
" <td>NaN</td>\n",
" <td>113.1</td>\n",
" <td>242.8</td>\n",
" <td>2868.0</td>\n",
" <td>672.2</td>\n",
" <td>1965.4</td>\n",
" <td>230.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>2013</td>\n",
" <td>316497531</td>\n",
" <td>1199684</td>\n",
" <td>14319</td>\n",
" <td>82109</td>\n",
" <td>113695.0</td>\n",
" <td>345095</td>\n",
" <td>726575</td>\n",
" <td>8650761</td>\n",
" <td>1931835</td>\n",
" <td>...</td>\n",
" <td>379.1</td>\n",
" <td>4.5</td>\n",
" <td>25.9</td>\n",
" <td>35.9</td>\n",
" <td>109.0</td>\n",
" <td>229.6</td>\n",
" <td>2733.3</td>\n",
" <td>610.4</td>\n",
" <td>1901.6</td>\n",
" <td>221.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>2014</td>\n",
" <td>318857056</td>\n",
" <td>1197987</td>\n",
" <td>14249</td>\n",
" <td>84041</td>\n",
" <td>116645.0</td>\n",
" <td>325802</td>\n",
" <td>741291</td>\n",
" <td>8277829</td>\n",
" <td>1729806</td>\n",
" <td>...</td>\n",
" <td>375.7</td>\n",
" <td>4.5</td>\n",
" <td>26.4</td>\n",
" <td>36.6</td>\n",
" <td>102.2</td>\n",
" <td>232.5</td>\n",
" <td>2596.1</td>\n",
" <td>542.5</td>\n",
" <td>1837.3</td>\n",
" <td>216.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>55 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" Year Population Violent crime total \n",
"0 1960 179323175 288460 \\\n",
"1 1961 182992000 289390 \n",
"2 1962 185771000 301510 \n",
"3 1963 188483000 316970 \n",
"4 1964 191141000 364220 \n",
"5 1965 193526000 387390 \n",
"6 1966 195576000 430180 \n",
"7 1967 197457000 499930 \n",
"8 1968 199399000 595010 \n",
"9 1969 201385000 661870 \n",
"10 1970 203235298 738820 \n",
"11 1971 206212000 816500 \n",
"12 1972 208230000 834900 \n",
"13 1973 209851000 875910 \n",
"14 1974 211392000 974720 \n",
"15 1975 213124000 1039710 \n",
"16 1976 214659000 1004210 \n",
"17 1977 216332000 1029580 \n",
"18 1978 218059000 1085550 \n",
"19 1979 220099000 1208030 \n",
"20 1980 225349264 1344520 \n",
"21 1981 229465714 1361820 \n",
"22 1982 231664458 1322390 \n",
"23 1983 233791994 1258087 \n",
"24 1984 235824902 1273282 \n",
"25 1985 237923795 1327767 \n",
"26 1986 240132887 1489169 \n",
"27 1987 242288918 1483999 \n",
"28 1988 244498982 1566221 \n",
"29 1989 246819230 1646037 \n",
"30 1990 249464396 1820127 \n",
"31 1991 252153092 1911767 \n",
"32 1992 255029699 1932274 \n",
"33 1993 257782608 1926017 \n",
"34 1994 260327021 1857670 \n",
"35 1995 262803276 1798792 \n",
"36 1996 265228572 1688540 \n",
"37 1997 267783607 1636096 \n",
"38 1998 270248003 1533887 \n",
"39 1999 272690813 1426044 \n",
"40 2000 281421906 1425486 \n",
"41 2001 285317559 1439480 \n",
"42 2002 287973924 1423677 \n",
"43 2003 290788976 1383676 \n",
"44 2004 293656842 1360088 \n",
"45 2005 296507061 1390745 \n",
"46 2006 299398484 1435123 \n",
"47 2007 301621157 1422970 \n",
"48 2008 304059724 1394461 \n",
"49 2009 307006550 1325896 \n",
"50 2010 309330219 1251248 \n",
"51 2011 311587816 1206031 \n",
"52 2012 313873685 1217067 \n",
"53 2013 316497531 1199684 \n",
"54 2014 318857056 1197987 \n",
"\n",
" Murder and nonnegligent Manslaughter Legacy rape /1 Revised rape /2 \n",
"0 9110 17190 NaN \\\n",
"1 8740 17220 NaN \n",
"2 8530 17550 NaN \n",
"3 8640 17650 NaN \n",
"4 9360 21420 NaN \n",
"5 9960 23410 NaN \n",
"6 11040 25820 NaN \n",
"7 12240 27620 NaN \n",
"8 13800 31670 NaN \n",
"9 14760 37170 NaN \n",
"10 16000 37990 NaN \n",
"11 17780 42260 NaN \n",
"12 18670 46850 NaN \n",
"13 19640 51400 NaN \n",
"14 20710 55400 NaN \n",
"15 20510 56090 NaN \n",
"16 18780 57080 NaN \n",
"17 19120 63500 NaN \n",
"18 19560 67610 NaN \n",
"19 21460 76390 NaN \n",
"20 23040 82990 NaN \n",
"21 22520 82500 NaN \n",
"22 21010 78770 NaN \n",
"23 19308 78918 NaN \n",
"24 18692 84233 NaN \n",
"25 18976 87671 NaN \n",
"26 20613 91459 NaN \n",
"27 20096 91111 NaN \n",
"28 20675 92486 NaN \n",
"29 21500 94504 NaN \n",
"30 23438 102555 NaN \n",
"31 24703 106593 NaN \n",
"32 23760 109062 NaN \n",
"33 24526 106014 NaN \n",
"34 23326 102216 NaN \n",
"35 21606 97470 NaN \n",
"36 19645 96252 NaN \n",
"37 18208 96153 NaN \n",
"38 16974 93144 NaN \n",
"39 15522 89411 NaN \n",
"40 15586 90178 NaN \n",
"41 16037 90863 NaN \n",
"42 16229 95235 NaN \n",
"43 16528 93883 NaN \n",
"44 16148 95089 NaN \n",
"45 16740 94347 NaN \n",
"46 17309 94472 NaN \n",
"47 17128 92160 NaN \n",
"48 16465 90750 NaN \n",
"49 15399 89241 NaN \n",
"50 14722 85593 NaN \n",
"51 14661 84175 NaN \n",
"52 14866 85141 NaN \n",
"53 14319 82109 113695.0 \n",
"54 14249 84041 116645.0 \n",
"\n",
" Robbery Aggravated assault Property crime total Burglary ... \n",
"0 107840 154320 3095700 912100 ... \\\n",
"1 106670 156760 3198600 949600 ... \n",
"2 110860 164570 3450700 994300 ... \n",
"3 116470 174210 3792500 1086400 ... \n",
"4 130390 203050 4200400 1213200 ... \n",
"5 138690 215330 4352000 1282500 ... \n",
"6 157990 235330 4793300 1410100 ... \n",
"7 202910 257160 5403500 1632100 ... \n",
"8 262840 286700 6125200 1858900 ... \n",
"9 298850 311090 6749000 1981900 ... \n",
"10 349860 334970 7359200 2205000 ... \n",
"11 387700 368760 7771700 2399300 ... \n",
"12 376290 393090 7413900 2375500 ... \n",
"13 384220 420650 7842200 2565500 ... \n",
"14 442400 456210 9278700 3039200 ... \n",
"15 470500 492620 10252700 3265300 ... \n",
"16 427810 500530 10345500 3108700 ... \n",
"17 412610 534350 9955000 3071500 ... \n",
"18 426930 571460 10123400 3128300 ... \n",
"19 480700 629480 11041500 3327700 ... \n",
"20 565840 672650 12063700 3795200 ... \n",
"21 592910 663900 12061900 3779700 ... \n",
"22 553130 669480 11652000 3447100 ... \n",
"23 506567 653294 10850543 3129851 ... \n",
"24 485008 685349 10608473 2984434 ... \n",
"25 497874 723246 11102590 3073348 ... \n",
"26 542775 834322 11722700 3241410 ... \n",
"27 517704 855088 12024709 3236184 ... \n",
"28 542968 910092 12356865 3218077 ... \n",
"29 578326 951707 12605412 3168170 ... \n",
"30 639271 1054863 12655486 3073909 ... \n",
"31 687732 1092739 12961116 3157150 ... \n",
"32 672478 1126974 12505917 2979884 ... \n",
"33 659870 1135607 12218777 2834808 ... \n",
"34 618949 1113179 12131873 2712774 ... \n",
"35 580509 1099207 12063935 2593784 ... \n",
"36 535594 1037049 11805323 2506400 ... \n",
"37 498534 1023201 11558475 2460526 ... \n",
"38 447186 976583 10951827 2332735 ... \n",
"39 409371 911740 10208334 2100739 ... \n",
"40 408016 911706 10182584 2050992 ... \n",
"41 423557 909023 10437189 2116531 ... \n",
"42 420806 891407 10455277 2151252 ... \n",
"43 414235 859030 10442862 2154834 ... \n",
"44 401470 847381 10319386 2144446 ... \n",
"45 417438 862220 10174754 2155448 ... \n",
"46 449246 874096 10019601 2194993 ... \n",
"47 447324 866358 9882212 2190198 ... \n",
"48 443563 843683 9774152 2228887 ... \n",
"49 408742 812514 9337060 2203313 ... \n",
"50 369089 781844 9112625 2168459 ... \n",
"51 354772 752423 9052743 2185140 ... \n",
"52 355051 762009 9001992 2109932 ... \n",
"53 345095 726575 8650761 1931835 ... \n",
"54 325802 741291 8277829 1729806 ... \n",
"\n",
" Violent Crime rate Murder and nonnegligent manslaughter rate \n",
"0 160.9 5.1 \\\n",
"1 158.1 4.8 \n",
"2 162.3 4.6 \n",
"3 168.2 4.6 \n",
"4 190.6 4.9 \n",
"5 200.2 5.1 \n",
"6 220.0 5.6 \n",
"7 253.2 6.2 \n",
"8 298.4 6.9 \n",
"9 328.7 7.3 \n",
"10 363.5 7.9 \n",
"11 396.0 8.6 \n",
"12 401.0 9.0 \n",
"13 417.4 9.4 \n",
"14 461.1 9.8 \n",
"15 487.8 9.6 \n",
"16 467.8 8.7 \n",
"17 475.9 8.8 \n",
"18 497.8 9.0 \n",
"19 548.9 9.8 \n",
"20 596.6 10.2 \n",
"21 593.5 9.8 \n",
"22 570.8 9.1 \n",
"23 538.1 8.3 \n",
"24 539.9 7.9 \n",
"25 558.1 8.0 \n",
"26 620.1 8.6 \n",
"27 612.5 8.3 \n",
"28 640.6 8.5 \n",
"29 666.9 8.7 \n",
"30 729.6 9.4 \n",
"31 758.2 9.8 \n",
"32 757.7 9.3 \n",
"33 747.1 9.5 \n",
"34 713.6 9.0 \n",
"35 684.5 8.2 \n",
"36 636.6 7.4 \n",
"37 611.0 6.8 \n",
"38 567.6 6.3 \n",
"39 523.0 5.7 \n",
"40 506.5 5.5 \n",
"41 504.5 5.6 \n",
"42 494.4 5.6 \n",
"43 475.8 5.7 \n",
"44 463.2 5.5 \n",
"45 469.0 5.6 \n",
"46 479.3 5.8 \n",
"47 471.8 5.7 \n",
"48 458.6 5.4 \n",
"49 431.9 5.0 \n",
"50 404.5 4.8 \n",
"51 387.1 4.7 \n",
"52 387.8 4.7 \n",
"53 379.1 4.5 \n",
"54 375.7 4.5 \n",
"\n",
" Legacy rape rate /1 Revised rape rate /2 Robbery rate \n",
"0 9.6 NaN 60.1 \\\n",
"1 9.4 NaN 58.3 \n",
"2 9.4 NaN 59.7 \n",
"3 9.4 NaN 61.8 \n",
"4 11.2 NaN 68.2 \n",
"5 12.1 NaN 71.7 \n",
"6 13.2 NaN 80.8 \n",
"7 14.0 NaN 102.8 \n",
"8 15.9 NaN 131.8 \n",
"9 18.5 NaN 148.4 \n",
"10 18.7 NaN 172.1 \n",
"11 20.5 NaN 188.0 \n",
"12 22.5 NaN 180.7 \n",
"13 24.5 NaN 183.1 \n",
"14 26.2 NaN 209.3 \n",
"15 26.3 NaN 220.8 \n",
"16 26.6 NaN 199.3 \n",
"17 29.4 NaN 190.7 \n",
"18 31.0 NaN 195.8 \n",
"19 34.7 NaN 218.4 \n",
"20 36.8 NaN 251.1 \n",
"21 36.0 NaN 258.4 \n",
"22 34.0 NaN 238.8 \n",
"23 33.8 NaN 216.7 \n",
"24 35.7 NaN 205.7 \n",
"25 36.8 NaN 209.3 \n",
"26 38.1 NaN 226.0 \n",
"27 37.6 NaN 213.7 \n",
"28 37.8 NaN 222.1 \n",
"29 38.3 NaN 234.3 \n",
"30 41.1 NaN 256.3 \n",
"31 42.3 NaN 272.7 \n",
"32 42.8 NaN 263.7 \n",
"33 41.1 NaN 256.0 \n",
"34 39.3 NaN 237.8 \n",
"35 37.1 NaN 220.9 \n",
"36 36.3 NaN 201.9 \n",
"37 35.9 NaN 186.2 \n",
"38 34.5 NaN 165.5 \n",
"39 32.8 NaN 150.1 \n",
"40 32.0 NaN 145.0 \n",
"41 31.8 NaN 148.5 \n",
"42 33.1 NaN 146.1 \n",
"43 32.3 NaN 142.5 \n",
"44 32.4 NaN 136.7 \n",
"45 31.8 NaN 140.8 \n",
"46 31.6 NaN 150.0 \n",
"47 30.6 NaN 148.3 \n",
"48 29.8 NaN 145.9 \n",
"49 29.1 NaN 133.1 \n",
"50 27.7 NaN 119.3 \n",
"51 27.0 NaN 113.9 \n",
"52 27.1 NaN 113.1 \n",
"53 25.9 35.9 109.0 \n",
"54 26.4 36.6 102.2 \n",
"\n",
" Aggravated assault rate Property crime rate Burglary rate \n",
"0 86.1 1726.3 508.6 \\\n",
"1 85.7 1747.9 518.9 \n",
"2 88.6 1857.5 535.2 \n",
"3 92.4 2012.1 576.4 \n",
"4 106.2 2197.5 634.7 \n",
"5 111.3 2248.8 662.7 \n",
"6 120.3 2450.9 721.0 \n",
"7 130.2 2736.5 826.6 \n",
"8 143.8 3071.8 932.3 \n",
"9 154.5 3351.3 984.1 \n",
"10 164.8 3621.0 1084.9 \n",
"11 178.8 3768.8 1163.5 \n",
"12 188.8 3560.4 1140.8 \n",
"13 200.5 3737.0 1222.5 \n",
"14 215.8 4389.3 1437.7 \n",
"15 231.1 4810.7 1532.1 \n",
"16 233.2 4819.5 1448.2 \n",
"17 247.0 4601.7 1419.8 \n",
"18 262.1 4642.5 1434.6 \n",
"19 286.0 5016.6 1511.9 \n",
"20 298.5 5353.3 1684.1 \n",
"21 289.3 5256.5 1647.2 \n",
"22 289.0 5029.7 1488.0 \n",
"23 279.4 4641.1 1338.7 \n",
"24 290.6 4498.5 1265.5 \n",
"25 304.0 4666.4 1291.7 \n",
"26 347.4 4881.8 1349.8 \n",
"27 352.9 4963.0 1335.7 \n",
"28 372.2 5054.0 1316.2 \n",
"29 385.6 5107.1 1283.6 \n",
"30 422.9 5073.1 1232.2 \n",
"31 433.4 5140.2 1252.1 \n",
"32 441.9 4903.7 1168.4 \n",
"33 440.5 4740.0 1099.7 \n",
"34 427.6 4660.2 1042.1 \n",
"35 418.3 4590.5 987.0 \n",
"36 391.0 4451.0 945.0 \n",
"37 382.1 4316.3 918.8 \n",
"38 361.4 4052.5 863.2 \n",
"39 334.3 3743.6 770.4 \n",
"40 324.0 3618.3 728.8 \n",
"41 318.6 3658.1 741.8 \n",
"42 309.5 3630.6 747.0 \n",
"43 295.4 3591.2 741.0 \n",
"44 288.6 3514.1 730.3 \n",
"45 290.8 3431.5 726.9 \n",
"46 292.0 3346.6 733.1 \n",
"47 287.2 3276.4 726.1 \n",
"48 277.5 3214.6 733.0 \n",
"49 264.7 3041.3 717.7 \n",
"50 252.8 2945.9 701.0 \n",
"51 241.5 2905.4 701.3 \n",
"52 242.8 2868.0 672.2 \n",
"53 229.6 2733.3 610.4 \n",
"54 232.5 2596.1 542.5 \n",
"\n",
" Larceny-theft rate Motor vehicle theft rate \n",
"0 1034.7 183.0 \n",
"1 1045.4 183.6 \n",
"2 1124.8 197.4 \n",
"3 1219.1 216.6 \n",
"4 1315.5 247.4 \n",
"5 1329.3 256.8 \n",
"6 1442.9 286.9 \n",
"7 1575.8 334.1 \n",
"8 1746.6 393.0 \n",
"9 1930.9 436.2 \n",
"10 2079.3 456.8 \n",
"11 2145.5 459.8 \n",
"12 1993.6 426.1 \n",
"13 2071.9 442.6 \n",
"14 2489.5 462.2 \n",
"15 2804.8 473.7 \n",
"16 2921.3 450.0 \n",
"17 2729.9 451.9 \n",
"18 2747.4 460.5 \n",
"19 2999.1 505.6 \n",
"20 3167.0 502.2 \n",
"21 3135.3 474.1 \n",
"22 3083.1 458.6 \n",
"23 2871.3 431.1 \n",
"24 2795.2 437.7 \n",
"25 2911.2 463.5 \n",
"26 3022.1 509.8 \n",
"27 3095.4 531.9 \n",
"28 3151.7 586.1 \n",
"29 3189.6 634.0 \n",
"30 3185.1 655.8 \n",
"31 3229.1 659.0 \n",
"32 3103.6 631.6 \n",
"33 3033.9 606.3 \n",
"34 3026.9 591.3 \n",
"35 3043.2 560.3 \n",
"36 2980.3 525.7 \n",
"37 2891.8 505.7 \n",
"38 2729.5 459.9 \n",
"39 2550.7 422.5 \n",
"40 2477.3 412.2 \n",
"41 2485.7 430.5 \n",
"42 2450.7 432.9 \n",
"43 2416.5 433.7 \n",
"44 2362.3 421.5 \n",
"45 2287.8 416.8 \n",
"46 2213.2 400.2 \n",
"47 2185.4 364.9 \n",
"48 2166.1 315.4 \n",
"49 2064.5 259.2 \n",
"50 2005.8 239.1 \n",
"51 1974.1 230.0 \n",
"52 1965.4 230.4 \n",
"53 1901.6 221.3 \n",
"54 1837.3 216.2 \n",
"\n",
"[55 rows x 22 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.read_csv(path, storage_options={'protocol': 'file'}, **kw)"
]
},
{
"cell_type": "markdown",
"id": "9e4da37b",
"metadata": {},
"source": [
"Magic-make this into a \"data\" entity and tied \"reader\". Alternate spelling of this is\n",
"```\n",
"intake.readers.readers.reader_from_call(pd.read_csv, path, storage_options={'protocol': 'file'}, **kw)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "79c56c68",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'reader': <intake.readers.readers.PandasCSV at 0x164bb5120>,\n",
" 'kwargs': {'usecols': None},\n",
" 'data': CSV(metadata={}, url='file:///Users/mdurant/code/intake-examples/us_crime/data/crime.csv', storage_options={'protocol': 'file'})}"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"intake.readers.readers.reader_from_call(_i3)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "88005d35",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Year</th>\n",
" <th>Population</th>\n",
" <th>Violent crime total</th>\n",
" <th>Murder and nonnegligent Manslaughter</th>\n",
" <th>Legacy rape /1</th>\n",
" <th>Revised rape /2</th>\n",
" <th>Robbery</th>\n",
" <th>Aggravated assault</th>\n",
" <th>Property crime total</th>\n",
" <th>Burglary</th>\n",
" <th>...</th>\n",
" <th>Violent Crime rate</th>\n",
" <th>Murder and nonnegligent manslaughter rate</th>\n",
" <th>Legacy rape rate /1</th>\n",
" <th>Revised rape rate /2</th>\n",
" <th>Robbery rate</th>\n",
" <th>Aggravated assault rate</th>\n",
" <th>Property crime rate</th>\n",
" <th>Burglary rate</th>\n",
" <th>Larceny-theft rate</th>\n",
" <th>Motor vehicle theft rate</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1960</td>\n",
" <td>179323175</td>\n",
" <td>288460</td>\n",
" <td>9110</td>\n",
" <td>17190</td>\n",
" <td>NaN</td>\n",
" <td>107840</td>\n",
" <td>154320</td>\n",
" <td>3095700</td>\n",
" <td>912100</td>\n",
" <td>...</td>\n",
" <td>160.9</td>\n",
" <td>5.1</td>\n",
" <td>9.6</td>\n",
" <td>NaN</td>\n",
" <td>60.1</td>\n",
" <td>86.1</td>\n",
" <td>1726.3</td>\n",
" <td>508.6</td>\n",
" <td>1034.7</td>\n",
" <td>183.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1961</td>\n",
" <td>182992000</td>\n",
" <td>289390</td>\n",
" <td>8740</td>\n",
" <td>17220</td>\n",
" <td>NaN</td>\n",
" <td>106670</td>\n",
" <td>156760</td>\n",
" <td>3198600</td>\n",
" <td>949600</td>\n",
" <td>...</td>\n",
" <td>158.1</td>\n",
" <td>4.8</td>\n",
" <td>9.4</td>\n",
" <td>NaN</td>\n",
" <td>58.3</td>\n",
" <td>85.7</td>\n",
" <td>1747.9</td>\n",
" <td>518.9</td>\n",
" <td>1045.4</td>\n",
" <td>183.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1962</td>\n",
" <td>185771000</td>\n",
" <td>301510</td>\n",
" <td>8530</td>\n",
" <td>17550</td>\n",
" <td>NaN</td>\n",
" <td>110860</td>\n",
" <td>164570</td>\n",
" <td>3450700</td>\n",
" <td>994300</td>\n",
" <td>...</td>\n",
" <td>162.3</td>\n",
" <td>4.6</td>\n",
" <td>9.4</td>\n",
" <td>NaN</td>\n",
" <td>59.7</td>\n",
" <td>88.6</td>\n",
" <td>1857.5</td>\n",
" <td>535.2</td>\n",
" <td>1124.8</td>\n",
" <td>197.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1963</td>\n",
" <td>188483000</td>\n",
" <td>316970</td>\n",
" <td>8640</td>\n",
" <td>17650</td>\n",
" <td>NaN</td>\n",
" <td>116470</td>\n",
" <td>174210</td>\n",
" <td>3792500</td>\n",
" <td>1086400</td>\n",
" <td>...</td>\n",
" <td>168.2</td>\n",
" <td>4.6</td>\n",
" <td>9.4</td>\n",
" <td>NaN</td>\n",
" <td>61.8</td>\n",
" <td>92.4</td>\n",
" <td>2012.1</td>\n",
" <td>576.4</td>\n",
" <td>1219.1</td>\n",
" <td>216.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1964</td>\n",
" <td>191141000</td>\n",
" <td>364220</td>\n",
" <td>9360</td>\n",
" <td>21420</td>\n",
" <td>NaN</td>\n",
" <td>130390</td>\n",
" <td>203050</td>\n",
" <td>4200400</td>\n",
" <td>1213200</td>\n",
" <td>...</td>\n",
" <td>190.6</td>\n",
" <td>4.9</td>\n",
" <td>11.2</td>\n",
" <td>NaN</td>\n",
" <td>68.2</td>\n",
" <td>106.2</td>\n",
" <td>2197.5</td>\n",
" <td>634.7</td>\n",
" <td>1315.5</td>\n",
" <td>247.4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1965</td>\n",
" <td>193526000</td>\n",
" <td>387390</td>\n",
" <td>9960</td>\n",
" <td>23410</td>\n",
" <td>NaN</td>\n",
" <td>138690</td>\n",
" <td>215330</td>\n",
" <td>4352000</td>\n",
" <td>1282500</td>\n",
" <td>...</td>\n",
" <td>200.2</td>\n",
" <td>5.1</td>\n",
" <td>12.1</td>\n",
" <td>NaN</td>\n",
" <td>71.7</td>\n",
" <td>111.3</td>\n",
" <td>2248.8</td>\n",
" <td>662.7</td>\n",
" <td>1329.3</td>\n",
" <td>256.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1966</td>\n",
" <td>195576000</td>\n",
" <td>430180</td>\n",
" <td>11040</td>\n",
" <td>25820</td>\n",
" <td>NaN</td>\n",
" <td>157990</td>\n",
" <td>235330</td>\n",
" <td>4793300</td>\n",
" <td>1410100</td>\n",
" <td>...</td>\n",
" <td>220.0</td>\n",
" <td>5.6</td>\n",
" <td>13.2</td>\n",
" <td>NaN</td>\n",
" <td>80.8</td>\n",
" <td>120.3</td>\n",
" <td>2450.9</td>\n",
" <td>721.0</td>\n",
" <td>1442.9</td>\n",
" <td>286.9</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1967</td>\n",
" <td>197457000</td>\n",
" <td>499930</td>\n",
" <td>12240</td>\n",
" <td>27620</td>\n",
" <td>NaN</td>\n",
" <td>202910</td>\n",
" <td>257160</td>\n",
" <td>5403500</td>\n",
" <td>1632100</td>\n",
" <td>...</td>\n",
" <td>253.2</td>\n",
" <td>6.2</td>\n",
" <td>14.0</td>\n",
" <td>NaN</td>\n",
" <td>102.8</td>\n",
" <td>130.2</td>\n",
" <td>2736.5</td>\n",
" <td>826.6</td>\n",
" <td>1575.8</td>\n",
" <td>334.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1968</td>\n",
" <td>199399000</td>\n",
" <td>595010</td>\n",
" <td>13800</td>\n",
" <td>31670</td>\n",
" <td>NaN</td>\n",
" <td>262840</td>\n",
" <td>286700</td>\n",
" <td>6125200</td>\n",
" <td>1858900</td>\n",
" <td>...</td>\n",
" <td>298.4</td>\n",
" <td>6.9</td>\n",
" <td>15.9</td>\n",
" <td>NaN</td>\n",
" <td>131.8</td>\n",
" <td>143.8</td>\n",
" <td>3071.8</td>\n",
" <td>932.3</td>\n",
" <td>1746.6</td>\n",
" <td>393.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1969</td>\n",
" <td>201385000</td>\n",
" <td>661870</td>\n",
" <td>14760</td>\n",
" <td>37170</td>\n",
" <td>NaN</td>\n",
" <td>298850</td>\n",
" <td>311090</td>\n",
" <td>6749000</td>\n",
" <td>1981900</td>\n",
" <td>...</td>\n",
" <td>328.7</td>\n",
" <td>7.3</td>\n",
" <td>18.5</td>\n",
" <td>NaN</td>\n",
" <td>148.4</td>\n",
" <td>154.5</td>\n",
" <td>3351.3</td>\n",
" <td>984.1</td>\n",
" <td>1930.9</td>\n",
" <td>436.2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>10 rows × 22 columns</p>\n",
"</div>"
],
"text/plain": [
" Year Population Violent crime total \n",
"0 1960 179323175 288460 \\\n",
"1 1961 182992000 289390 \n",
"2 1962 185771000 301510 \n",
"3 1963 188483000 316970 \n",
"4 1964 191141000 364220 \n",
"5 1965 193526000 387390 \n",
"6 1966 195576000 430180 \n",
"7 1967 197457000 499930 \n",
"8 1968 199399000 595010 \n",
"9 1969 201385000 661870 \n",
"\n",
" Murder and nonnegligent Manslaughter Legacy rape /1 Revised rape /2 \n",
"0 9110 17190 NaN \\\n",
"1 8740 17220 NaN \n",
"2 8530 17550 NaN \n",
"3 8640 17650 NaN \n",
"4 9360 21420 NaN \n",
"5 9960 23410 NaN \n",
"6 11040 25820 NaN \n",
"7 12240 27620 NaN \n",
"8 13800 31670 NaN \n",
"9 14760 37170 NaN \n",
"\n",
" Robbery Aggravated assault Property crime total Burglary ... \n",
"0 107840 154320 3095700 912100 ... \\\n",
"1 106670 156760 3198600 949600 ... \n",
"2 110860 164570 3450700 994300 ... \n",
"3 116470 174210 3792500 1086400 ... \n",
"4 130390 203050 4200400 1213200 ... \n",
"5 138690 215330 4352000 1282500 ... \n",
"6 157990 235330 4793300 1410100 ... \n",
"7 202910 257160 5403500 1632100 ... \n",
"8 262840 286700 6125200 1858900 ... \n",
"9 298850 311090 6749000 1981900 ... \n",
"\n",
" Violent Crime rate Murder and nonnegligent manslaughter rate \n",
"0 160.9 5.1 \\\n",
"1 158.1 4.8 \n",
"2 162.3 4.6 \n",
"3 168.2 4.6 \n",
"4 190.6 4.9 \n",
"5 200.2 5.1 \n",
"6 220.0 5.6 \n",
"7 253.2 6.2 \n",
"8 298.4 6.9 \n",
"9 328.7 7.3 \n",
"\n",
" Legacy rape rate /1 Revised rape rate /2 Robbery rate \n",
"0 9.6 NaN 60.1 \\\n",
"1 9.4 NaN 58.3 \n",
"2 9.4 NaN 59.7 \n",
"3 9.4 NaN 61.8 \n",
"4 11.2 NaN 68.2 \n",
"5 12.1 NaN 71.7 \n",
"6 13.2 NaN 80.8 \n",
"7 14.0 NaN 102.8 \n",
"8 15.9 NaN 131.8 \n",
"9 18.5 NaN 148.4 \n",
"\n",
" Aggravated assault rate Property crime rate Burglary rate \n",
"0 86.1 1726.3 508.6 \\\n",
"1 85.7 1747.9 518.9 \n",
"2 88.6 1857.5 535.2 \n",
"3 92.4 2012.1 576.4 \n",
"4 106.2 2197.5 634.7 \n",
"5 111.3 2248.8 662.7 \n",
"6 120.3 2450.9 721.0 \n",
"7 130.2 2736.5 826.6 \n",
"8 143.8 3071.8 932.3 \n",
"9 154.5 3351.3 984.1 \n",
"\n",
" Larceny-theft rate Motor vehicle theft rate \n",
"0 1034.7 183.0 \n",
"1 1045.4 183.6 \n",
"2 1124.8 197.4 \n",
"3 1219.1 216.6 \n",
"4 1315.5 247.4 \n",
"5 1329.3 256.8 \n",
"6 1442.9 286.9 \n",
"7 1575.8 334.1 \n",
"8 1746.6 393.0 \n",
"9 1930.9 436.2 \n",
"\n",
"[10 rows x 22 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reader = _[\"reader\"]\n",
"reader.discover() # read a limited subset"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "df9c4035",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Transformers for pandas:DataFrame:\n",
"{'hvplot:hvPlotTabular': <function daskdf_to_hvplot at 0x1265a2d40>,\n",
" 'intake.readers.datatypes:FileData': <function pandas_to_parquet at 0x1265a36d0>,\n",
" 'pandas:DataFrame': <function df_select_columns at 0x1265a35b0>}"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reader.transform # things I know how to do to this kind of output"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "ea75eea0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Population</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>179323175</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>182992000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>185771000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>188483000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>191141000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>193526000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>195576000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>197457000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>199399000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>201385000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>203235298</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>206212000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>208230000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>209851000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>211392000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>213124000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>214659000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>216332000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>218059000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>220099000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>225349264</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>229465714</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>231664458</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>233791994</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>235824902</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>237923795</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>240132887</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>242288918</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>244498982</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>246819230</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>249464396</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>252153092</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>255029699</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>257782608</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>260327021</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>262803276</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>265228572</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>267783607</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>270248003</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>272690813</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>281421906</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>285317559</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>287973924</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>290788976</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>293656842</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>296507061</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>299398484</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>301621157</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>304059724</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>307006550</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>309330219</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>311587816</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>313873685</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>316497531</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>318857056</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Population\n",
"0 179323175\n",
"1 182992000\n",
"2 185771000\n",
"3 188483000\n",
"4 191141000\n",
"5 193526000\n",
"6 195576000\n",
"7 197457000\n",
"8 199399000\n",
"9 201385000\n",
"10 203235298\n",
"11 206212000\n",
"12 208230000\n",
"13 209851000\n",
"14 211392000\n",
"15 213124000\n",
"16 214659000\n",
"17 216332000\n",
"18 218059000\n",
"19 220099000\n",
"20 225349264\n",
"21 229465714\n",
"22 231664458\n",
"23 233791994\n",
"24 235824902\n",
"25 237923795\n",
"26 240132887\n",
"27 242288918\n",
"28 244498982\n",
"29 246819230\n",
"30 249464396\n",
"31 252153092\n",
"32 255029699\n",
"33 257782608\n",
"34 260327021\n",
"35 262803276\n",
"36 265228572\n",
"37 267783607\n",
"38 270248003\n",
"39 272690813\n",
"40 281421906\n",
"41 285317559\n",
"42 287973924\n",
"43 290788976\n",
"44 293656842\n",
"45 296507061\n",
"46 299398484\n",
"47 301621157\n",
"48 304059724\n",
"49 307006550\n",
"50 309330219\n",
"51 311587816\n",
"52 313873685\n",
"53 316497531\n",
"54 318857056"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# the simplest transform, a new view on the data, which needs an argument\n",
"reader.transform.df_select_columns(columns=[\"Population\"]).discover()"
]
},
{
"cell_type": "markdown",
"id": "eed98d20",
"metadata": {},
"source": [
"What other readers can handle this data type?"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "4c2681e6",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'importable': {intake.readers.readers.DaskCSV,\n",
" intake.readers.readers.DuckCSV,\n",
" intake.readers.readers.PandasCSV,\n",
" intake.readers.readers.RayCSV},\n",
" 'not_importable': {intake.readers.readers.SparkCSV}}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"intake.readers.readers.recommend(reader.data)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "f84f93a9",
"metadata": {},
"outputs": [],
"source": [
"# let's read it with Ray\n",
"reader2 = reader(reader=intake.readers.readers.RayCSV)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "a8fc0c58",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Transformers for ray.data:Dataset:\n",
"{'dask.dataframe:DataFrame': <function ray_to_daskdf at 0x1265a2dd0>,\n",
" 'pandas:DataFrame': <function ray_to_pandas at 0x1265a2cb0>}"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# and what can I do with that kind of output?\n",
"reader2.transform"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "38cb88b2",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-06-08 11:36:47,535\tINFO worker.py:1616 -- Started a local Ray instance. View the dashboard at \u001b[1m\u001b[32m127.0.0.1:8265 \u001b[39m\u001b[22m\n",
"2023-06-08 11:36:49,034\tWARNING read_api.py:358 -- ⚠️ The number of blocks in this dataset (1) limits its parallelism to 1 concurrent tasks. This is much less than the number of available CPU slots in the cluster. Use `.repartition(n)` to increase the number of dataset blocks.\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Read progress 0: 0%| | 0/1 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Read progress 0: 0%| | 0/1 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='cd8efe70-1c6e-44be-a1da-3354d2afa036'>\n",
" <div id=\"c89d3448-e81a-4999-bef9-1bedb59f9a92\" data-root-id=\"cd8efe70-1c6e-44be-a1da-3354d2afa036\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"25c9cea3-879a-4c78-8f39-842fd3a667e5\":{\"version\":\"3.1.1\",\"title\":\"Bokeh Application\",\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}],\"roots\":[{\"type\":\"object\",\"name\":\"Column\",\"id\":\"cd8efe70-1c6e-44be-a1da-3354d2afa036\",\"attributes\":{\"name\":\"Column01251\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.0.2/dist/css/loading.css\"}},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.0.2/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.0.2/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.0.2/dist/bundled/theme/native.css\"}}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.markup.HTML\",\"id\":\"f8465362-9ded-441e-acf9-603ef7bc9dbd\",\"attributes\":{\"visible\":false,\"css_classes\":[\"markdown\",\"alert\",\"alert-danger\"],\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"5c128697-28f6-4ebd-bf6d-de7b8c87c728\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.0.2/dist/css/alerts.css\"}},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}},{\"type\":\"object\",\"name\":\"Row\",\"id\":\"0f2f0e99-7a9b-49ad-a770-41206cb83051\",\"attributes\":{\"name\":\"Row01245\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"min_width\":0,\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.tabs.Tabs\",\"id\":\"632cb533-1dcf-406a-8365-b4c096a5b19b\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":400,\"min_width\":400,\"margin\":0,\"align\":\"start\",\"tabs\":[{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"799d84d8-8e9a-456a-bef4-23bfd1951cf4\",\"attributes\":{\"name\":\"hvDataFrameExplorer\",\"title\":\"Fields\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"f11e790a-2114-44d0-9d0b-e864c7918098\",\"attributes\":{\"name\":\"hvDataFrameExplorer\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"min_width\":0,\"max_width\":300,\"margin\":[5,10],\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.widgets.CustomSelect\",\"id\":\"56ce198b-1ce6-47a7-92a4-f831638abdae\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.0.2/dist/css/select.css\"}},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Kind\",\"options\":[[\"area\",\"area\"],[\"bar\",\"bar\"],[\"barh\",\"barh\"],[\"bivariate\",\"bivariate\"],[\"box\",\"box\"],[\"density\",\"density\"],[\"errorbars\",\"errorbars\"],[\"heatmap\",\"heatmap\"],[\"hexbin\",\"hexbin\"],[\"hist\",\"hist\"],[\"kde\",\"kde\"],[\"labels\",\"labels\"],[\"line\",\"line\"],[\"ohlc\",\"ohlc\"],[\"paths\",\"paths\"],[\"polygons\",\"polygons\"],[\"scatter\",\"scatter\"],[\"step\",\"step\"],[\"table\",\"table\"],[\"vectorfield\",\"vectorfield\"],[\"violin\",\"violin\"]],\"value\":\"line\"}},{\"type\":\"object\",\"name\":\"panel.models.widgets.CustomSelect\",\"id\":\"cf4ecbaa-1246-4310-92ab-f2f53bed033a\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"X\",\"options\":[[\"index\",\"index\"],[\"Year\",\"Year\"],[\"Population\",\"Population\"],[\"Violent crime total\",\"Violent crime total\"],[\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\"],[\"Legacy rape /1\",\"Legacy rape /1\"],[\"Revised rape /2\",\"Revised rape /2\"],[\"Robbery\",\"Robbery\"],[\"Aggravated assault\",\"Aggravated assault\"],[\"Property crime total\",\"Property crime total\"],[\"Burglary\",\"Burglary\"],[\"Larceny-theft\",\"Larceny-theft\"],[\"Motor vehicle theft\",\"Motor vehicle theft\"],[\"Violent Crime rate\",\"Violent Crime rate\"],[\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\"],[\"Legacy rape rate /1\",\"Legacy rape rate /1\"],[\"Revised rape rate /2\",\"Revised rape rate /2\"],[\"Robbery rate\",\"Robbery rate\"],[\"Aggravated assault rate\",\"Aggravated assault rate\"],[\"Property crime rate\",\"Property crime rate\"],[\"Burglary rate\",\"Burglary rate\"],[\"Larceny-theft rate\",\"Larceny-theft rate\"],[\"Motor vehicle theft rate\",\"Motor vehicle theft rate\"]],\"value\":\"index\"}},{\"type\":\"object\",\"name\":\"MultiSelect\",\"id\":\"cb2f0c8a-9c03-4c91-b08f-bed2837e2a56\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"y\",\"options\":[\"Year\",\"Population\",\"Violent crime total\",\"Murder and nonnegligent Manslaughter\",\"Legacy rape /1\",\"Revised rape /2\",\"Robbery\",\"Aggravated assault\",\"Property crime total\",\"Burglary\",\"Larceny-theft\",\"Motor vehicle theft\",\"Violent Crime rate\",\"Murder and nonnegligent manslaughter rate\",\"Legacy rape rate /1\",\"Revised rape rate /2\",\"Robbery rate\",\"Aggravated assault rate\",\"Property crime rate\",\"Burglary rate\",\"Larceny-theft rate\",\"Motor vehicle theft rate\"]}},{\"type\":\"object\",\"name\":\"MultiSelect\",\"id\":\"5f3843f5-2595-47da-91bd-ba65da2ea7fc\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"By\",\"options\":[\"Year\",\"Population\",\"Violent crime total\",\"Murder and nonnegligent Manslaughter\",\"Legacy rape /1\",\"Revised rape /2\",\"Robbery\",\"Aggravated assault\",\"Property crime total\",\"Burglary\",\"Larceny-theft\",\"Motor vehicle theft\",\"Violent Crime rate\",\"Murder and nonnegligent manslaughter rate\",\"Legacy rape rate /1\",\"Revised rape rate /2\",\"Robbery rate\",\"Aggravated assault rate\",\"Property crime rate\",\"Burglary rate\",\"Larceny-theft rate\",\"Motor vehicle theft rate\"]}},{\"type\":\"object\",\"name\":\"MultiSelect\",\"id\":\"69bda298-2f39-4bd4-8cf5-5d7a9eb768a5\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Groupby\",\"options\":[\"Year\",\"Population\",\"Violent crime total\",\"Murder and nonnegligent Manslaughter\",\"Legacy rape /1\",\"Revised rape /2\",\"Robbery\",\"Aggravated assault\",\"Property crime total\",\"Burglary\",\"Larceny-theft\",\"Motor vehicle theft\",\"Violent Crime rate\",\"Murder and nonnegligent manslaughter rate\",\"Legacy rape rate /1\",\"Revised rape rate /2\",\"Robbery rate\",\"Aggravated assault rate\",\"Property crime rate\",\"Burglary rate\",\"Larceny-theft rate\",\"Motor vehicle theft rate\"]}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"42548a6e-fb27-46cc-b688-0afefd961f5b\",\"attributes\":{\"name\":\"Axes\",\"title\":\"Axes\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"cb93eacf-b7af-426a-b889-3dcd171b6def\",\"attributes\":{\"name\":\"Axes\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"RangeSlider\",\"id\":\"e946de66-64ed-4b7d-93f9-2b77e3fa6772\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"title\":\"Xlim\",\"value\":[0,54],\"start\":0,\"end\":54,\"step\":0.1}},{\"type\":\"object\",\"name\":\"RangeSlider\",\"id\":\"4f97df47-135d-4bf7-bde3-d2505878b01c\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"title\":\"Ylim\",\"value\":[1960,2014],\"start\":1960,\"end\":2014,\"step\":0.1}},{\"type\":\"object\",\"name\":\"panel.models.widgets.CustomSelect\",\"id\":\"f8c94e9d-4770-4599-a0f3-603900319815\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Legend\",\"options\":[[\"top_right\",\"top_right\"],[\"top_left\",\"top_left\"],[\"bottom_left\",\"bottom_left\"],[\"bottom_right\",\"bottom_right\"],[\"right\",\"right\"],[\"left\",\"left\"],[\"top\",\"top\"],[\"bottom\",\"bottom\"]],\"value\":\"right\"}},{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"02615ffe-ad60-4873-b551-038ea3f184df\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"label\":\"Logx\"}},{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"9596d013-cdf2-43b2-af18-06a89f33ac8c\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"label\":\"Logy\"}},{\"type\":\"object\",\"name\":\"Spinner\",\"id\":\"e91606c6-ce4b-4daa-a3db-dd8245415f9a\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Height\",\"low\":0,\"placeholder\":\"0\",\"mode\":\"int\"}},{\"type\":\"object\",\"name\":\"Spinner\",\"id\":\"a5dfd585-632f-4698-8f16-934eceeb1d03\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Width\",\"low\":0,\"placeholder\":\"0\",\"mode\":\"int\"}},{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"e142b43f-1115-4b3f-bcff-5cfbb37a9061\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"label\":\"Responsive\"}},{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"67f142ca-1b74-4182-b817-f32bbbd62cdc\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"active\":true,\"label\":\"Shared axes\"}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"a968806e-e151-494f-adc5-4aa9faaa9f27\",\"attributes\":{\"name\":\"Labels\",\"title\":\"Labels\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"b97a8556-855b-4331-98f6-1c03d0c7fa9e\",\"attributes\":{\"name\":\"Labels\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"TextInput\",\"id\":\"e0704e00-007d-4c10-ae95-be60bbd08a47\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Title\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"a2b927ba-0b84-4c33-8dbd-bab2ceeaa3ab\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"e032b1b5-890e-41ff-ad5e-8dde756d7093\",\"attributes\":{\"html\":\"<p>Title for the plot</p>\\n\"}}}},\"max_length\":5000}},{\"type\":\"object\",\"name\":\"TextInput\",\"id\":\"236fb015-480a-43ab-988c-ec4dd5150fca\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Xlabel\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"67bc0741-c2b2-4824-946d-2c5a74831f9a\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"c2bd1ef8-3906-4b4d-b3cd-acc43bb1cd01\",\"attributes\":{\"html\":\"<p>Axis labels for the x-axis.</p>\\n\"}}}},\"max_length\":5000}},{\"type\":\"object\",\"name\":\"TextInput\",\"id\":\"92ed078c-defb-4a31-a207-3d8b30b97d05\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Ylabel\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"2e578fd1-615f-4129-92b9-6808aa1e18eb\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"f3f18c1a-5584-4a5f-9534-232394aee4b3\",\"attributes\":{\"html\":\"<p>Axis labels for the y-axis.</p>\\n\"}}}},\"max_length\":5000}},{\"type\":\"object\",\"name\":\"TextInput\",\"id\":\"5a7c0b88-9d70-4f29-86f3-677e5970ad2b\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Clabel\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"20d7f90f-573f-4a57-9e7a-25a5b06e1ca9\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"5dbd71ab-9ee0-4048-b38f-8cdb4e19b1d0\",\"attributes\":{\"html\":\"<p>Axis labels for the colorbar.</p>\\n\"}}}},\"max_length\":5000}},{\"type\":\"object\",\"name\":\"Spinner\",\"id\":\"e16fa1e4-9983-4a1f-a611-5c6eb6c4ca6e\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Fontscale\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"21141d29-125e-4967-a10b-682e8d8c9582\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"8536da10-8dfa-4802-ad9e-a2b2808fa072\",\"attributes\":{\"html\":\"<p>Scales the size of all fonts by the same amount, e.g. fontscale=1.5\\nenlarges all fonts (title, xticks, labels etc.) by 50%.</p>\\n\"}}}},\"value\":1,\"step\":0.1}},{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"1a08a84f-4a14-428a-81fa-93f581461ce2\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"title\":\"Rot\",\"start\":0,\"end\":360,\"value\":0}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"313570c7-92a0-49b6-9a95-5e8db75dd877\",\"attributes\":{\"name\":\"Style\",\"title\":\"Style\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"378fd89c-3aad-424b-9797-ba4ae6c8322c\",\"attributes\":{\"name\":\"Style\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"min_width\":0,\"max_width\":300,\"margin\":[5,10],\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Slider\",\"id\":\"89f91266-3ce3-4e8b-8869-13639e2ede15\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"title\":\"Alpha\",\"start\":0.0,\"end\":1.0,\"value\":1,\"step\":0.1}}]}}}},{\"type\":\"object\",\"name\":\"TabPanel\",\"id\":\"c3db5bfe-3250-424d-8ecc-143a0cee6365\",\"attributes\":{\"name\":\"Operations\",\"title\":\"Operations\",\"child\":{\"type\":\"object\",\"name\":\"Column\",\"id\":\"40859d72-b17c-4157-a66c-d8906a14d880\",\"attributes\":{\"name\":\"Operations\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"min_width\":0,\"max_width\":300,\"margin\":[5,10],\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"b39c2582-74a8-462d-9d63-5df53057e533\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"label\":\"Datashade\"}},{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"6ad62e30-ac98-4724-bf66-2700acdfce2e\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":[5,10],\"align\":\"start\",\"label\":\"Rasterize\"}},{\"type\":\"object\",\"name\":\"panel.models.widgets.CustomSelect\",\"id\":\"ca87dc8b-93a1-4bff-a5c1-d1bfe7c084c3\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"225c868c-efe7-4753-9d29-b27391ddc87b\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"disabled\":true,\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Aggregator\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"8048dbaa-108d-4214-9e99-68b2200a856d\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"db9facc6-3eba-4e6e-b7d9-56e90a22d119\",\"attributes\":{\"html\":\"<p>Aggregator to use when applying rasterize or datashade operation.</p>\\n\"}}}},\"options\":[[\"None\",\"None\"],[\"count\",\"count\"],[\"min\",\"min\"],[\"max\",\"max\"],[\"mean\",\"mean\"],[\"sum\",\"sum\"],[\"any\",\"any\"]]}},{\"type\":\"object\",\"name\":\"Checkbox\",\"id\":\"e5dc4269-0e11-4dbc-9e84-c3157f848ab9\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"disabled\":true,\"margin\":[5,10],\"align\":\"start\",\"label\":\"Dynspread\"}},{\"type\":\"object\",\"name\":\"Spinner\",\"id\":\"a2263b93-deb5-42c3-ab1f-0ca18f097955\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"disabled\":true,\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"X sampling\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"be3ec7a9-b6bf-4d4a-ad4f-68260f5d36f0\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"7e62b386-c5e7-43b4-bab9-920eeb2d4074\",\"attributes\":{\"html\":\"<p>Specifies the smallest allowed sampling interval along the x-axis.</p>\\n\"}}}},\"step\":0.1}},{\"type\":\"object\",\"name\":\"Spinner\",\"id\":\"b6a54b28-a637-4ff5-bfb3-40cc1dd20b16\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"disabled\":true,\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"title\":\"Y sampling\",\"description\":{\"type\":\"object\",\"name\":\"Tooltip\",\"id\":\"b71df88b-3a68-4379-bfaf-e9e296d1b7e5\",\"attributes\":{\"syncable\":false,\"stylesheets\":[\":host { white-space: initial; max-width: 300px; }\"],\"position\":\"right\",\"content\":{\"type\":\"object\",\"name\":\"bokeh.models.dom.HTML\",\"id\":\"ba691ce6-8c62-4d2f-b236-60b4c4d7710e\",\"attributes\":{\"html\":\"<p>Specifies the smallest allowed sampling interval along the y-axis.</p>\\n\"}}}},\"step\":0.1}}]}}}}],\"tabs_location\":\"left\"}},{\"type\":\"object\",\"name\":\"Row\",\"id\":\"217ec118-3312-464d-b0f7-6680db816692\",\"attributes\":{\"name\":\"Row02106\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"345ee916-1ca4-4d2b-87d7-5cd89d0c2392\"},{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"386f9496-37b9-438a-96a2-aebd492af461\",\"attributes\":{\"width\":700,\"height\":300,\"min_height\":300,\"margin\":[0,20,0,20],\"sizing_mode\":\"stretch_width\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"a201b9fc-104e-439c-aa05-84c35fe84066\",\"attributes\":{\"tags\":[[[\"index\",\"index\",null]]],\"end\":54.0,\"reset_start\":0.0,\"reset_end\":54.0}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"e27fd452-d048-4f98-bfe3-67df477c355a\",\"attributes\":{\"tags\":[[[\"value\",\"value\",null]]],\"start\":-31885700.650000002,\"end\":350742761.15,\"reset_start\":-31885700.650000002,\"reset_end\":350742761.15}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"30fd4239-bcca-4d38-9163-9eea6369e028\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"517d77a9-0f40-4ab4-9970-045dcf66948e\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"97603aba-f6f6-45e6-a910-7c4ceeb8ecbb\",\"attributes\":{\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"b455605a-2133-44f4-95fc-caede909ec66\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"071f10cf-05a3-453b-92f3-cfa807ab3156\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"95a506c9-3fa3-4406-9bd2-f787e2064315\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"ecc2012c-9e16-4032-b229-dab1ba54561b\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"qAcAAKkHAACqBwAAqwcAAKwHAACtBwAArgcAAK8HAACwBwAAsQcAALIHAACzBwAAtAcAALUHAAC2BwAAtwcAALgHAAC5BwAAugcAALsHAAC8BwAAvQcAAL4HAAC/BwAAwAcAAMEHAADCBwAAwwcAAMQHAADFBwAAxgcAAMcHAADIBwAAyQcAAMoHAADLBwAAzAcAAM0HAADOBwAAzwcAANAHAADRBwAA0gcAANMHAADUBwAA1QcAANYHAADXBwAA2AcAANkHAADaBwAA2wcAANwHAADdBwAA3gcAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\",\"Year\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"e613b722-e01c-40b4-8391-0c1492d180a7\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"339a3cc7-a7c2-48d1-91cd-fce0f42c01a2\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"4cb99933-580f-49dc-b268-eb9097cf2800\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"319c56a5-1eed-4468-8a26-cb40ad706079\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"99994533-8bd7-4812-8529-b58b6858c8dc\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"45e1ab43-48d9-4e29-92cc-db5bf1061c2a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"ee0942c8-9af1-402d-bf64-9d1d6e4092c5\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"22fbbcec-29bf-4f1e-a0e2-07daebc318b3\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"9522d7e8-4bd7-48c2-a057-d3191a928943\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"7fec5800-f1a6-4b8d-99d9-43aebd6cc6aa\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"J0GwCoA86Ar4oxILuAU8C4iUZAvw+IgLwECoC2j0xAtYluILKOQADOIfHQygi0oMcFZpDHgSggwAlpkMoAO0DLhvywzg9uQM+FD/DLhxHg2Qjm4Ncl6tDUrrzg36Ye8NBmcODtNtLg4XI1AOFglxDibCkg6eKbYOTIbeDgSNBw/DcTMPUHNdD21GhA9MD6oPHBHPD7cN9g9DqBsQfe5AEFIoxhC3mQERJCIqEXAWVREK2YARtVasEVR12BGlX/oRTJUfElaMTBIrAXAS6HOSEhVVtRJ7Xt0SYF8BEw==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\",\"Population\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"cd137620-acc1-44e7-b8ff-a6759089b4c9\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"7dc9aaac-cb6c-4c60-bbd8-293dfc6a347e\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"d7d71e13-0279-4644-a3d5-9718360d4fbb\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"74a661c5-a84d-46af-a09a-480d51fcd799\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"0aa62d88-e358-4a46-bfe9-079ebac39287\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"1d4bdee4-d5b3-4e91-a417-5be3f657e796\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"3ab95ff8-83f9-4eb5-ba0c-ddc10ae42ad3\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"bf9587ab-994a-4929-962e-94d84a26b3e5\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"c044b51f-0629-4aa8-969b-cfc7342cecc2\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"6dcd989e-7448-4f82-9ae5-c6e697da564e\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zGYEAG5qBADGmQQAKtYEALyOBQA+6QUAZJAGANqgBwBCFAkAbhkKAARGCwB0dQwAVL0MAIZdDQCA3w4AXt0PALJSDwDMtQ8AbpAQAN5uEgAIhBQAnMcUAJYtFABnMhMAwm0TAJdCFAARuRYA36QWAA3mFwDVHRkA38UbANcrHQDyex0AgWMdAIZYHACIchsA3MMZAAD3GAC/ZxcAfMIVAE7AFQD49hUAPbkVAPwcFQDYwBQAmTgVAPPlFQB6thUAHUcVAEg7FACwFxMAD2cSACuSEgBEThIAo0cSAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\",\"Violent crime total\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"41b133bb-2653-443c-a9f3-8cfd0c122711\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"2d82105c-6229-4914-a539-b3abbdaad2f4\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"e71d4a69-a3ac-4aa4-82e8-7e14c4b6a267\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"735ee13f-afe8-41d2-93a3-562a68232728\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"1326a122-a99c-4aeb-a944-00f9ede1f92a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"44e8e7ac-2627-4ab8-92c1-e2e581be828a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"46f50029-1a19-44cc-9671-9aab47788bd3\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"f810fbec-4d51-4d7b-bdde-47a72f9765a2\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"e4295484-c7ce-4f33-b533-8da0a873616c\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"2994f3db-1e73-43e6-b520-4f5ca41be89e\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"liMAACQiAABSIQAAwCEAAJAkAADoJgAAICsAANAvAADoNQAAqDkAAIA+AAB0RQAA7kgAALhMAADmUAAAHlAAAFxJAACwSgAAaEwAANRTAAAAWgAA+FcAABJSAABsSwAABEkAACBKAACFUAAAgE4AAMNQAAD8UwAAjlsAAH9gAADQXAAAzl8AAB5bAABmVAAAvUwAACBHAABOQgAAojwAAOI8AAClPgAAZT8AAJBAAAAUPwAAZEEAAJ1DAADoQgAAUUAAACc8AACCOQAARTkAABI6AADvNwAAqTcAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\",\"Murder and nonnegligent Manslaughter\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"c34030d7-5747-4fb4-90d6-86bcd916b6bc\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"cfea89dd-cf64-44bd-a4ab-23f501d26374\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"cecce85c-3a3b-4bbe-a285-f64877a5410b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"fee19e01-b83a-4196-bd8b-bbdc80b62b0c\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"04d93cc5-bce0-420a-8a2a-660a73c7fd3f\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c63918bf-df17-459e-a109-5afead6744a8\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"966f7f73-032d-452d-951e-411ae73b3e6b\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"50c26f94-b15a-411b-8ebd-0afd4d613d5f\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"2351b3b0-e4ac-4efb-897e-2f29c5f3ba05\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"cc3a20ba-c9f5-4d4c-a61d-5abe32fd963f\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"JkMAAERDAACORAAA8kQAAKxTAAByWwAA3GQAAORrAAC2ewAAMpEAAGaUAAAUpQAAArcAAMjIAABo2AAAGtsAAPjeAAAM+AAAGggBAGYqAQAuRAEAREIBALIzAQBGNAEACUkBAHdWAQBDZQEA52MBAEZpAQAocQEAm5ABAGGgAQAGqgEAHp4BAEiPAQC+fAEA/HcBAJl3AQDYawEAQ10BAEJgAQDvYgEAA3QBALtuAQBxcwEAi3ABAAhxAQAAaAEAfmIBAJlcAQBZTgEAz0gBAJVMAQC9QAEASUgBAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\",\"Legacy rape /1\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"36acec6b-e3b6-4808-af89-4b496a96a45a\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"c73508c8-8d12-42c4-a2b2-438aa9d9571b\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"891de80d-a31b-4f72-94ba-6ed7646a8360\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c11dde75-81d5-401b-a19c-948f5a794fc2\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c2868960-faaf-407d-808c-32d52c250818\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c4c10dbd-8273-41be-91bb-167ac20eb136\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"c7a311c8-939b-4a0a-af92-aa276d030450\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"2588a8ee-5b67-4186-b0b8-102273fcfd56\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"518eda5e-b0a4-417f-82d0-62f7557348a2\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"0eb35e29-b1a1-4b62-8884-a93c2056fbfb\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAADwwftAAAAAAFB6/EA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\",\"Revised rape /2\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"ce354752-61e6-4319-b5c1-33fad456e9ce\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"c1632102-b531-45b3-ad9f-932c5fa028fe\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"d9601193-e3e7-4b11-9a90-b92a6d3186ca\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"ec5494d5-ac3a-40dc-b125-5aa6339b232e\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"f657df52-4e78-4643-9870-dea5763e0c28\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"f1defa6b-8668-4af9-8f7f-5db95f72e009\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"f4e3749b-73f5-4f71-a6a9-8aaa8af116cd\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"0a0b383c-8f4d-4e13-99fd-45d7981f8a31\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"1a97bf3f-e849-4184-aa4a-737e1199dbc3\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"f6815832-2287-4ea0-ab4a-6f0c99ae46a8\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"QKUBAK6gAQAMsQEA9sYBAFb9AQDCHQIAJmkCAJ4YAwC4AgQAYo8EAKRWBQB06gUA4r0FANzcBQAgwAYA5C0HACKHBgDCSwYAsoMGALxVBwBQoggADgwJAKpwCADHugcAkGYHANKYBwA3SAgASOYHAPhICAAW0wgAJ8EJAHR+CgDeQgoAnhEKAMVxCQCd2wgAKiwIAGabBwDS0gYAGz8GANA5BgCFdgYAxmsGABtSBgA+IAYAnl4GAN7aBgBc0wYAq8QGAKY8BgDBoQUA1GkFAOtqBQAHRAUAqvgEAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\",\"Robbery\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"8f6ee349-514c-46f6-b5e0-0c455d879ad4\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"b81423ce-7616-4b9a-b868-c83a299a6261\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"945fec8b-8e0a-43e4-9961-11855465d252\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"18488027-332d-451e-860d-aa6e008ffd7b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"500647e7-3748-4cfd-81da-97f6cca0a93b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"2e5b0ed4-6211-4fcd-9b73-582e9bc82b5b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"1ebbf0be-4e02-4505-8f5c-8a036a8d7a2c\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"29465fd1-325f-4b9b-a23e-4e6574ee526d\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"16889320-c3bf-4e61-89aa-c6bfeec41195\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"16b84ae2-c9d6-47bd-a267-d68512647072\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"0FoCAFhkAgDaggIAgqgCACoZAwAiSQMAQpcDAIjsAwDsXwQAMr8EAHocBQB4oAUAgv8FACprBgAS9gYATIQHADKjBwBOJwgARLgIAOiaCQCKQwoAXCEKACg3CgDu9wkAJXUKAC4JCwASuwwAMAwNAAzjDQCbhQ4AjxgQAIOsEAA+MhEA91MRAFv8EADHxRAA+dIPAOGcDwDH5g4AfOkNAFrpDQDf3g0AD5oNAJYbDQAV7gwADCgNAHBWDQA2OA0Ao98MAOJlDAAU7gsAJ3sLAJmgCwAvFgsAq08LAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\",\"Aggravated assault\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"6e0db898-5ff6-4a6a-a9f9-f307eee22285\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"f057f886-6a70-42e5-9da0-e7de07ce14b6\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"412ddaf8-dd9e-44c3-9601-85e32d78361d\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"b7df7d2f-3d81-45ac-9a4d-204f4192f50b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"86945aec-e9d9-4927-ae37-58314476b270\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"27e14bf6-928e-494b-9af9-e4463ec62a73\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"def0cc31-2b04-451c-aee6-c6de62290c8b\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"2223857c-aa12-4a87-b456-9e86150ab8f9\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"bf391290-da2a-4166-9dfa-f567700cc7ae\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"7cad9246-a572-4437-aabc-0ba90d0c400c\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"lDwvAIjOMABMpzQAdN45ANAXQAAAaEIA1CNJAGxzUgCQdl0ASPtmAOBKcAA0lnYAjCBxAJipdwDslI0AnHGcABzcnQC45pcAiHiaANx6qADUE7gAzAy4AKDLsQDvkKUAWd+hAH5pqQDM37IAhXu3AAGNvADkV8AAfhvBAFzFxQA9074AmXG6ACEeuQC/FLgAiyK0AEtesACTHKcATsSbALhfmwBFQp8A7YifAG5YnwAadp0AIkGbABHjmABkypYASCSVAOR4jgAxDIsARyKKAAhciQAJAIQARU9+AA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\",\"Property crime total\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"5b717ebb-d4bb-4b6d-b114-77a7f1ed9a42\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"f08c1ccf-4957-4707-a878-e0c5e8c71109\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"f3928c35-f6b8-4019-af8f-5ffcee8a2623\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"75ee342e-e0b4-48ee-9a5d-a08a2e146abf\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"fe8784d1-1cab-47a4-9f05-9cc72f677c58\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"6b60d601-b42b-4e25-8e3a-6629a655f644\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"2b1ebda2-781b-4f48-bae7-011f9f66d68c\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"599cfcda-c36e-4bbf-a87d-7bac1b7745c0\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"a660fd4a-e1f0-4198-a27e-9de926213491\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"5451d277-9f71-4db4-baea-90d074eeb679\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"5OoNAGB9DgD8Kw8AwJMQABCDEgDEkRMANIQVAGTnGABUXRwAzD0eAEilIQBEnCQATD8kAHwlJwDgXy4AFNMxAFxvLwAM3i4A7LsvANTGMgAA6TkAdKw5ADyZNAD7wS8A8oktAETlLgDCdTEAWGExAJ0aMQCqVzAAdecuAJ4sMAAseC0AeEErAMZkKQD4kycAoD4mAG6LJQA/mCMAAw4gALBLHwCzSyAAVNMgAFLhIAC+uCAAuOMgADF+IQB2ayEAlwIiALGeIQCLFiEAtFchAOwxIAA7eh0ADmUaAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\",\"Burglary\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"fb477d21-127f-4bad-8e72-f616c6ff4240\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"87ff6cca-37de-4e1b-8af5-135d993e2b18\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"1f76d47d-f5ca-4b0a-8cf7-a05555dd8449\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"aac70be9-bf99-4a5d-b71f-c7b479da77df\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"3d7c0eec-e016-4ab8-98a4-d691bcd4eb0c\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"294e05ff-2fbf-43bd-968c-8a76eebcd902\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"0222a438-1500-49ef-933f-1d29ffacb377\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"60155b3c-6431-4137-9023-90d4396623e2\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"d3da4316-10d4-47a7-b076-57db3bf2f882\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"947d7e68-a035-45cc-a832-198a4f79679b\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"qE8cAKgwHQCA4h8AyA8jAOBdJgA4QScAcA8rALB6LwBMJDUA2FU7AAh7QAAIgkMAoFc/APxXQgCkTFAAZDZbAFCvXwAkHVoAWGpbACi5ZACE5mwAIMdtAGT8bAC3bWYAgpVkACywaQBBvG4AS3ByABCVdQC6H3gAxj15AJQ9fAC/xngAbVZ3AIQ8eAAOCXoArZ14ABApdgC3jXAAACJqAMZgagArOGwA469rAHI4awAB2mkA14FnADscZQA2lGQAXn9kAC+2YAC5rF4At9tdACohXgBI1lsAwGRZAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\",\"Larceny-theft\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"67d06eae-9d2f-47eb-ad0a-b7760ccb5f41\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"3b555281-7dd2-40fd-b463-fbf6bb1c9ea1\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"77cf97e0-38a1-4316-9fd3-a3390f789419\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8c564b\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"9f5dda3f-77cd-48a1-b5cd-abf80bf82911\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8c564b\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"d0dad7d3-ee61-4b33-bedd-c6979c56e23b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8c564b\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c590593d-1333-4c21-8f37-6cdc4cd4cb37\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8c564b\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"7523eca9-5e5e-44bf-82c4-26f373f72240\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"383ded4e-403b-45a8-9f15-e81c8ceb97b6\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"1ee6a790-4ea7-41e6-8070-5f9fd523215f\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"f10f5546-df41-4745-be27-999e8912fda0\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CAIFAIAgBQDQmAUA7DoGAOA2BwAElQcAMJAIAFgRCgDw9AsApGcNAJAqDgDodw4AoIkNACAsDgDM6A4AwGcPAHC9DgAk6w4ARFIPAOD6EAC0RBEAOJkQAAA2EAA9YQ8A5b8PAA7UEADJrRIA4qkTAFTdFQCA4BcAQ/YYACpbGQBSlBgAtNkXANd8FwC5dxYAPkYVAM2pFACd9hIAS5QRAEKzEQBnvhIAtgUTAKo+EwBb4xIAk9sSAKVIEgC4yhAAU6IOAAQkDADtSAsA3O4KAPIICwCGrwoAd4UKAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"Variable\",[\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\",\"Motor vehicle theft\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"1c90ef18-c7d8-4361-b5b2-138ca66a1211\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"7eddd9df-8643-4e99-a6ae-ada005a5f4a7\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"6a567855-8c72-43ce-88b7-1541d1ae474d\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#bcbd22\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"0f9f0ce3-46c9-4ff1-91f9-77144febba02\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#bcbd22\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"2acd3052-969d-4562-8145-25223afe079b\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#bcbd22\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"f8fe384d-6428-41b6-ac2e-00288cc5685d\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#bcbd22\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"d6786f4b-b52d-4d39-baa1-10deb3cdde4b\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"bf18dd16-0be1-49aa-b8a4-0d8b7644d6dd\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"2aa47417-5053-4b2b-94a1-83f4d4226732\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"336024b4-c2d4-46db-b01d-efde8fd0dc11\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zczMzMwcZEAzMzMzM8NjQJqZmZmZSWRAZmZmZmYGZUAzMzMzM9NnQGZmZmZmBmlAAAAAAACAa0BmZmZmZqZvQGZmZmZmpnJAMzMzMzOLdEAAAAAAALh2QAAAAAAAwHhAAAAAAAAQeUBmZmZmZhZ6QJqZmZmZ0XxAzczMzMx8fkDNzMzMzDx9QGZmZmZmvn1AzczMzMwcf0AzMzMzMyeBQM3MzMzMpIJAAAAAAACMgkBmZmZmZtaBQM3MzMzM0IBAMzMzMzPfgEDNzMzMzHCBQM3MzMzMYINAAAAAAAAkg0DNzMzMzASEQDMzMzMz14RAzczMzMzMhkCamZmZmbGHQJqZmZmZrYdAzczMzMxYh0DNzMzMzEyGQAAAAAAAZIVAzczMzMzkg0AAAAAAABiDQM3MzMzMvIFAAAAAAABYgEAAAAAAAKh/QAAAAAAAiH9AZmZmZmbmfkDNzMzMzLx9QDMzMzMz83xAAAAAAABQfUDNzMzMzPR9QM3MzMzMfH1AmpmZmZmpfEBmZmZmZv56QAAAAAAASHlAmpmZmZkxeEDNzMzMzDx4QJqZmZmZsXdAMzMzMzN7d0A=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\",\"Violent Crime rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"d0e9ab1e-2301-4229-bbcb-d02bd7f984cb\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"82291234-b768-4d62-81f4-458dc49981ce\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"2cd82555-b159-4b89-8648-0802ce21ca67\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"cf4983fa-b49d-416f-acf6-724a9c911d32\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"0f7d0e7d-ad79-4276-8756-26661e060680\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"cc42ddb9-4059-4f8f-854b-c86e485a3b07\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#30a2da\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"cabe1516-3def-4b3c-b758-a38ac66b5539\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"13b2b26d-5374-4d4d-aece-68aa81666441\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"ed694958-e62d-4788-9767-550082a9604d\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"82b20e1b-8a52-4dff-8804-760652aca295\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ZmZmZmZmFEAzMzMzMzMTQGZmZmZmZhJAZmZmZmZmEkCamZmZmZkTQGZmZmZmZhRAZmZmZmZmFkDNzMzMzMwYQJqZmZmZmRtAMzMzMzMzHUCamZmZmZkfQDMzMzMzMyFAAAAAAAAAIkDNzMzMzMwiQJqZmZmZmSNAMzMzMzMzI0BmZmZmZmYhQJqZmZmZmSFAAAAAAAAAIkCamZmZmZkjQGZmZmZmZiRAmpmZmZmZI0AzMzMzMzMiQJqZmZmZmSBAmpmZmZmZH0AAAAAAAAAgQDMzMzMzMyFAmpmZmZmZIEAAAAAAAAAhQGZmZmZmZiFAzczMzMzMIkCamZmZmZkjQJqZmZmZmSJAAAAAAAAAI0AAAAAAAAAiQGZmZmZmZiBAmpmZmZmZHUAzMzMzMzMbQDMzMzMzMxlAzczMzMzMFkAAAAAAAAAWQGZmZmZmZhZAZmZmZmZmFkDNzMzMzMwWQAAAAAAAABZAZmZmZmZmFkAzMzMzMzMXQM3MzMzMzBZAmpmZmZmZFUAAAAAAAAAUQDMzMzMzMxNAzczMzMzMEkDNzMzMzMwSQAAAAAAAABJAAAAAAAAAEkA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\",\"Murder and nonnegligent manslaughter rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"6f172ead-b9a9-4be4-8944-d95bf7870db3\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"87272c67-cb69-4ea2-b14c-33b55362df5e\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"59ff8c96-8b58-49d8-8d73-57387f27ddef\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"cd38fd9e-ba4e-40a0-b90d-dd04607aaa63\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"850e4d60-e6b1-4791-8d51-129b850c1539\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"eac32769-1077-4747-990a-1f76268fee08\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#fc4f30\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"b6eb7c15-41ff-47e3-96d4-4e9efe4598b3\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"3e082363-59e3-40c5-b945-26facd30415c\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"0362f3e1-31f1-4ae7-b9aa-469ec6b4c790\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"a6c87e01-d8b2-4429-a2ca-114197fa8c37\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"MzMzMzMzI0DNzMzMzMwiQM3MzMzMzCJAzczMzMzMIkBmZmZmZmYmQDMzMzMzMyhAZmZmZmZmKkAAAAAAAAAsQM3MzMzMzC9AAAAAAACAMkAzMzMzM7MyQAAAAAAAgDRAAAAAAACANkAAAAAAAIA4QDMzMzMzMzpAzczMzMxMOkCamZmZmZk6QGZmZmZmZj1AAAAAAAAAP0CamZmZmVlBQGZmZmZmZkJAAAAAAAAAQkAAAAAAAABBQGZmZmZm5kBAmpmZmZnZQUBmZmZmZmZCQM3MzMzMDENAzczMzMzMQkBmZmZmZuZCQGZmZmZmJkNAzczMzMyMREBmZmZmZiZFQGZmZmZmZkVAzczMzMyMREBmZmZmZqZDQM3MzMzMjEJAZmZmZmYmQkAzMzMzM/NBQAAAAAAAQEFAZmZmZmZmQEAAAAAAAABAQM3MzMzMzD9AzczMzMyMQEBmZmZmZiZAQDMzMzMzM0BAzczMzMzMP0CamZmZmZk/QJqZmZmZmT5AzczMzMzMPUCamZmZmRk9QDMzMzMzsztAAAAAAAAAO0CamZmZmRk7QGZmZmZm5jlAZmZmZmZmOkA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\",\"Legacy rape rate /1\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"864e5487-6bdb-40c2-99e2-678312d8d3bd\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"d71da2ce-ae45-4a7c-9f02-729dcb2452d5\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"10232377-8924-4964-a9a7-1122f4ee1134\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c89d9e1f-2677-4cdd-b8aa-e40584b1bcd5\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"bd94120a-e7df-448d-afc4-1b301c765b77\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"423c5871-4963-4779-b55b-53fae948c992\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e5ae38\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"49c4ecce-0026-49fe-9fa0-fb5a6c66e9c1\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"5b8e3a5e-ce4b-48c2-80e1-b07f52cc1343\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"5bb219d3-5408-42b6-92b5-b40720113353\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"20ac6788-4da1-40db-97d8-d6f4d0f88144\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4fzMzMzMz80FAzczMzMxMQkA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\",\"Revised rape rate /2\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"cc9adda4-3702-4369-b90a-3b60733775de\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"f289ceb0-437f-43a3-8d7a-c1a396ae5529\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"99e21ade-1b2c-4b37-ba81-a7e67186de94\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"466d98dc-dd98-46ca-a98b-0bbbd7558dbe\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"09b0a0c2-0bc2-425b-9c98-555f13e83204\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"e44a13e2-281a-408b-b167-7c1a3ab0e253\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#6d904f\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"95191046-8709-4d7d-b136-ce3727bc8e07\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"c3f22504-6289-4b0e-b72f-ddd8b8ad6fcf\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"740024d1-3a18-474f-a636-773159acf813\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"5957fbd0-419c-43a6-877b-7e5608507324\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zczMzMwMTkBmZmZmZiZNQJqZmZmZ2U1AZmZmZmbmTkDNzMzMzAxRQM3MzMzM7FFAMzMzMzMzVEAzMzMzM7NZQJqZmZmZeWBAzczMzMyMYkAzMzMzM4NlQAAAAAAAgGdAZmZmZmaWZkAzMzMzM+NmQJqZmZmZKWpAmpmZmZmZa0CamZmZmeloQGZmZmZm1mdAmpmZmZl5aEDNzMzMzExrQDMzMzMzY29AZmZmZmYmcECamZmZmdltQGZmZmZmFmtAZmZmZma2aUCamZmZmSlqQAAAAAAAQGxAZmZmZma2akAzMzMzM8NrQJqZmZmZSW1AzczMzMwEcEAzMzMzMwtxQDMzMzMze3BAAAAAAAAAcECamZmZmbltQM3MzMzMnGtAzczMzMw8aUBmZmZmZkZnQAAAAAAAsGRAMzMzMzPDYkAAAAAAACBiQAAAAAAAkGJAMzMzMzNDYkAAAAAAANBhQGZmZmZmFmFAmpmZmZmZYUAAAAAAAMBiQJqZmZmZiWJAzczMzMw8YkAzMzMzM6NgQDMzMzMz011AmpmZmZl5XEBmZmZmZkZcQAAAAAAAQFtAzczMzMyMWUA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\",\"Robbery rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"44918b7c-4117-4eb0-a680-32bb52a00508\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"159fea28-5c68-4ac7-ab04-27d464d326bc\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"98a2578d-6d52-4fa4-b9e2-95bef6df4883\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"3b4096d8-bbae-465a-9801-87ed91b1e9c7\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"4c139a88-25d6-48e2-862b-0fe3849a1c24\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c796ce44-d603-4033-afbb-e9cc08810fbf\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#8b8b8b\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"ca621036-fab4-4e6c-b02a-07f453037cbe\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"25d2e4f9-b5d2-47ab-bb92-b47d4a145753\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"58ec8234-394f-4a0b-bafd-88673d7efbbb\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"a85801c7-3c40-4361-80dd-86335e5d34c6\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"ZmZmZmaGVUDNzMzMzGxVQGZmZmZmJlZAmpmZmZkZV0DNzMzMzIxaQDMzMzMz01tAMzMzMzMTXkBmZmZmZkZgQJqZmZmZ+WFAAAAAAABQY0CamZmZmZlkQJqZmZmZWWZAmpmZmZmZZ0AAAAAAABBpQJqZmZmZ+WpAMzMzMzPjbEBmZmZmZiZtQAAAAAAA4G5AmpmZmZlhcEAAAAAAAOBxQAAAAAAAqHJAzczMzMwUckAAAAAAABByQGZmZmZmdnFAmpmZmZkpckAAAAAAAABzQGZmZmZmtnVAZmZmZmYOdkAzMzMzM0N3QJqZmZmZGXhAZmZmZmZuekBmZmZmZhZ7QGZmZmZmnntAAAAAAACIe0CamZmZmbl6QM3MzMzMJHpAAAAAAABweECamZmZmeF3QGZmZmZmlnZAzczMzMzkdEAAAAAAAEB0QJqZmZmZ6XNAAAAAAABYc0BmZmZmZnZyQJqZmZmZCXJAzczMzMwsckAAAAAAAEByQDMzMzMz83FAAAAAAABYcUAzMzMzM4twQJqZmZmZmW9AAAAAAAAwbkCamZmZmVluQDMzMzMzs2xAAAAAAAAQbUA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\",\"Aggravated assault rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"58fd3172-4ecf-4249-8cb1-def900e1def9\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"f64d6d75-96f5-4479-ab31-41877f2c91cf\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"7be954cf-feca-4ad2-b72f-315d6701a406\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"a761fdc6-cbae-453f-a539-cffd5c648cf7\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"dbc805a5-065c-4a40-b717-86becec68146\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"9dc22776-7b71-4de3-8906-b588ca320862\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#17becf\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"be325be4-17a9-4e60-b176-f82adb8eff0c\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"6ee3cea4-baa2-4d3b-a1d8-bb65c1a531e0\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"c67077b5-9cfe-41d4-b504-f70d30b90bde\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"287879f2-3ec0-4b67-bd78-80fb5e784688\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"MzMzMzP5mkCamZmZmU+bQAAAAAAABp1AZmZmZmZwn0AAAAAAACuhQJqZmZmZkaFAzczMzMwlo0AAAAAAAGGlQJqZmZmZ/6dAmpmZmZkuqkAAAAAAAEqsQJqZmZmZca1AzczMzMzQq0AAAAAAADKtQM3MzMxMJbFAMzMzM7PKskAAAAAAgNOyQDMzMzOz+bFAAAAAAIAiskCamZmZmZizQM3MzMxM6bRAAAAAAICItEAzMzMzs6WzQJqZmZkZIbJAAAAAAICSsUBmZmZmZjqyQM3MzMzMEbNAAAAAAABjs0AAAAAAAL6zQJqZmZkZ87NAmpmZmRnRs0AzMzMzMxS0QDMzMzOzJ7NAAAAAAACEskAzMzMzMzSyQAAAAACA7rFAAAAAAABjsUDNzMzMTNywQAAAAAAAqa9AMzMzMzM/rUCamZmZmUSsQDMzMzMzlKxAMzMzMzNdrEBmZmZmZg6sQDMzMzMzdKtAAAAAAADPqkAzMzMzMyWqQM3MzMzMmKlAMzMzMzMdqUCamZmZmcKnQM3MzMzMA6dAzczMzMyypkAAAAAAAGimQJqZmZmZWqVAMzMzMzNIpEA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\",\"Property crime rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"8d132081-5829-42b0-b484-7cc1bcccef37\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"4f415ff0-8f13-4f95-bf88-2667420f04d5\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"51e365c6-ebfa-4ae4-99ca-66ebdd6b8572\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"9c582108-1ad8-44fd-991c-22ddba33d719\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"8564c356-0ba2-45a9-bd63-36c582a8d29a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"7fb3417f-2a21-4269-ae2f-4c1419efa39d\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#9467bd\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"cb9a5f6f-ca4d-4934-8ca2-53d53354d122\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"9622292d-894b-45f5-b3e9-be8c5a4feae6\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"b1d14769-cc20-4780-ad32-2cf2deaf76be\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"da653546-9b2b-425c-8204-851077c1c372\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"mpmZmZnJf0AzMzMzMzeAQJqZmZmZuYBAMzMzMzMDgkCamZmZmdWDQJqZmZmZtYRAAAAAAACIhkDNzMzMzNSJQGZmZmZmIo1AzczMzMzAjkCamZmZmfOQQAAAAAAALpJAMzMzMzPTkUAAAAAAABqTQM3MzMzMdpZAZmZmZmbwl0DNzMzMzKCWQDMzMzMzL5ZAZmZmZmZqlkCamZmZmZ+XQGZmZmZmUJpAzczMzMy8mUAAAAAAAECXQM3MzMzM6pRAAAAAAADGk0DNzMzMzC6UQDMzMzMzF5VAzczMzMzelEDNzMzMzJCUQGZmZmZmDpRAzczMzMxAk0BmZmZmZpCTQJqZmZmZQZJAzczMzMwukUBmZmZmZkiQQAAAAAAA2I5AAAAAAACIjUBmZmZmZraMQJqZmZmZ+YpAMzMzMzMTiEBmZmZmZsaGQGZmZmZmLodAAAAAAABYh0AAAAAAACiHQGZmZmZm0oZAMzMzMzO3hkDNzMzMzOiGQM3MzMzMsIZAAAAAAADohkCamZmZmW2GQAAAAAAA6IVAZmZmZmbqhUCamZmZmQGFQDMzMzMzE4NAAAAAAAD0gEA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\",\"Burglary rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"3fdc11f2-bd88-44d8-a89e-1adef05d2c82\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"18ed60b8-e3fd-45a8-be0a-b88df924fe37\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"23fdde9c-34b5-4f8d-92e8-bdf58a0d7b74\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"bf5b6fd0-ab22-4fce-858b-4921d4c57d84\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"2d65f8af-f9f8-4d40-9f6d-185c284897e2\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"b9e1ae5b-42a3-43ec-aab3-b528f56586ec\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#d62728\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"b7de1103-3c54-4cdc-9e69-ebe5ab7f91fd\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"5a51c389-deb9-4982-a7bc-3fcaf9fbe216\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"dd52b0b1-9572-4735-91a5-6b9de20f843c\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"38ee96a9-35f4-4b04-b2fb-7a0eebf9c0cc\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"zczMzMwqkECamZmZmVWQQDMzMzMzk5FAZmZmZmYMk0AAAAAAAI6UQDMzMzMzxZRAmpmZmZmLlkAzMzMzM5+YQGZmZmZmSptAmpmZmZkrnkCamZmZmT6gQAAAAAAAw6BAZmZmZmYmn0DNzMzMzC+gQAAAAAAAc6NAmpmZmZnppUCamZmZmdKmQM3MzMzMU6VAzczMzMx2pUAzMzMzM26nQAAAAAAAvqhAmpmZmZl+qEAzMzMzMxaoQJqZmZmZbqZAZmZmZmbWpUBmZmZmZr6mQDMzMzMznKdAzczMzMwuqEBmZmZmZp+oQDMzMzMz66hAMzMzMzPiqEAzMzMzMzqpQDMzMzMzP6hAzczMzMyzp0DNzMzMzKWnQGZmZmZmxqdAmpmZmZlIp0CamZmZmZemQAAAAAAAU6VAZmZmZmbto0CamZmZmVqjQGZmZmZma6NAZmZmZmYlo0AAAAAAAOGiQJqZmZmZdKJAmpmZmZnfoUBmZmZmZkqhQM3MzMzMEqFAMzMzMzPsoEAAAAAAACGgQDMzMzMzV59AZmZmZmbYnkCamZmZmbWeQGZmZmZmtp1AMzMzMzO1nEA=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\",\"Larceny-theft rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"d1f8ba01-2253-446c-b204-5eb328793148\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"3e88fece-1517-4410-afa2-87b2d3986754\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"cbe98ef6-f4d7-4672-b2e1-d6df82ea43db\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"edfcb312-ad6a-4d07-955a-1038dead23fc\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"7fabff60-eb49-463a-8afa-5f8bb7ac5d56\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"a065ae2c-f4c5-4061-8421-87bbee7252a8\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"e5cdf0e0-378d-451c-a9e6-af48a77db112\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"dae10983-9cfd-4b0a-84c9-dfe5f4a3458e\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"3c404a16-1efb-480d-bf91-f7f0f58d7e87\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"a77a5d30-93f3-4486-b8d1-36f855bebb8a\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAAA==\"},\"shape\":[55],\"dtype\":\"int32\",\"order\":\"little\"}],[\"value\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAADgZkAzMzMzM/NmQM3MzMzMrGhAMzMzMzMTa0DNzMzMzOxuQM3MzMzMDHBAZmZmZmbucUCamZmZmeF0QAAAAAAAkHhAMzMzMzNDe0DNzMzMzIx8QM3MzMzMvHxAmpmZmZmhekCamZmZmal7QDMzMzMz43xAMzMzMzObfUAAAAAAACB8QGZmZmZmPnxAAAAAAADIfECamZmZmZl/QDMzMzMzY39AmpmZmZmhfUCamZmZmal8QJqZmZmZ8XpAMzMzMzNbe0AAAAAAAPh8QM3MzMzM3H9AMzMzMzOfgEDNzMzMzFCCQAAAAAAA0INAZmZmZmZ+hEAAAAAAAJiEQM3MzMzMvINAZmZmZmbygkBmZmZmZnqCQGZmZmZmgoFAmpmZmZltgEAzMzMzM5t/QGZmZmZmvnxAAAAAAABoekAzMzMzM8N5QAAAAAAA6HpAZmZmZmYOe0AzMzMzMxt7QAAAAAAAWHpAzczMzMwMekAzMzMzMwN5QGZmZmZmznZAZmZmZma2c0AzMzMzMzNwQDMzMzMz421AAAAAAADAbEDNzMzMzMxsQJqZmZmZqWtAZmZmZmYGa0A=\"},\"shape\":[55],\"dtype\":\"float64\",\"order\":\"little\"}],[\"Variable\",[\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\",\"Motor vehicle theft rate\"]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"cb9277cd-9826-4d5b-92fc-0e76f3da8e92\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"9ed09bc9-439c-4796-83c0-f572c1401b7e\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"57b8b844-ecd8-4fd2-9782-ad0be0ca0cf9\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_width\":2}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"1d1afd0a-dec4-45b4-92d9-f9cf5a4d23f7\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"d084e1f4-42e5-4734-96b6-9e943f0d826a\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_alpha\":1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"c73cd0fc-1003-42e5-a572-d7fa6cb4b579\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"index\"},\"y\":{\"type\":\"field\",\"field\":\"value\"},\"line_color\":\"#e377c2\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"a8d20a9e-023e-4190-8e49-eb8284aad726\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"92f455d1-0d22-4413-a366-acbf946bf65e\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"b455605a-2133-44f4-95fc-caede909ec66\"},{\"id\":\"ee0942c8-9af1-402d-bf64-9d1d6e4092c5\"},{\"id\":\"3ab95ff8-83f9-4eb5-ba0c-ddc10ae42ad3\"},{\"id\":\"46f50029-1a19-44cc-9671-9aab47788bd3\"},{\"id\":\"966f7f73-032d-452d-951e-411ae73b3e6b\"},{\"id\":\"c7a311c8-939b-4a0a-af92-aa276d030450\"},{\"id\":\"f4e3749b-73f5-4f71-a6a9-8aaa8af116cd\"},{\"id\":\"1ebbf0be-4e02-4505-8f5c-8a036a8d7a2c\"},{\"id\":\"def0cc31-2b04-451c-aee6-c6de62290c8b\"},{\"id\":\"2b1ebda2-781b-4f48-bae7-011f9f66d68c\"},{\"id\":\"0222a438-1500-49ef-933f-1d29ffacb377\"},{\"id\":\"7523eca9-5e5e-44bf-82c4-26f373f72240\"},{\"id\":\"d6786f4b-b52d-4d39-baa1-10deb3cdde4b\"},{\"id\":\"cabe1516-3def-4b3c-b758-a38ac66b5539\"},{\"id\":\"b6eb7c15-41ff-47e3-96d4-4e9efe4598b3\"},{\"id\":\"49c4ecce-0026-49fe-9fa0-fb5a6c66e9c1\"},{\"id\":\"95191046-8709-4d7d-b136-ce3727bc8e07\"},{\"id\":\"ca621036-fab4-4e6c-b02a-07f453037cbe\"},{\"id\":\"be325be4-17a9-4e60-b176-f82adb8eff0c\"},{\"id\":\"cb9a5f6f-ca4d-4934-8ca2-53d53354d122\"},{\"id\":\"b7de1103-3c54-4cdc-9e69-ebe5ab7f91fd\"},{\"id\":\"e5cdf0e0-378d-451c-a9e6-af48a77db112\"}],\"tooltips\":[[\"Variable\",\"@{Variable}\"],[\"index\",\"@{index}\"],[\"value\",\"@{value}\"]]}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"d717ae41-c39f-4a7f-bb70-6a3c73ddcca2\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"27dcf77c-b5e5-4134-8bcf-900301a73b2f\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"1820b3c6-69f8-47d3-a2be-873573ceb397\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"15e7d114-83e4-47b9-8e65-e3c092ae7e57\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"4246fd65-31be-47d6-b9a6-64666a16d069\",\"attributes\":{\"syncable\":false,\"level\":\"overlay\",\"visible\":false,\"left_units\":\"canvas\",\"right_units\":\"canvas\",\"bottom_units\":\"canvas\",\"top_units\":\"canvas\",\"line_color\":\"black\",\"line_alpha\":1.0,\"line_width\":2,\"line_dash\":[4,4],\"fill_color\":\"lightgrey\",\"fill_alpha\":0.5}}}},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"490a63c0-55cc-43df-acf9-156ec310859e\"}],\"active_drag\":{\"id\":\"27dcf77c-b5e5-4134-8bcf-900301a73b2f\"},\"active_scroll\":{\"id\":\"1820b3c6-69f8-47d3-a2be-873573ceb397\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"2025fc95-b9c1-43c5-9777-07c9f19e916c\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"a409aabe-9dca-4e27-bafd-e192b8c7c8ad\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"bcb75380-384c-4b65-ba62-499005adb656\"},\"axis_label\":\"\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"5136cf4d-2945-4c5f-b4aa-88444578e29d\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"a5d4271f-3afd-47d0-89dd-d469e445227a\",\"attributes\":{\"location\":[0,0],\"title\":\"Variable\",\"click_policy\":\"mute\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"38a73efa-5c23-473b-92f1-ece11035912d\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Year\"},\"renderers\":[{\"id\":\"b455605a-2133-44f4-95fc-caede909ec66\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"1b9b6047-9091-472e-9b97-ca21b6e09436\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Population\"},\"renderers\":[{\"id\":\"ee0942c8-9af1-402d-bf64-9d1d6e4092c5\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"53289f84-0891-46b3-b5cc-1726a86d896e\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Violent crime total\"},\"renderers\":[{\"id\":\"3ab95ff8-83f9-4eb5-ba0c-ddc10ae42ad3\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"c9a328cd-8819-448d-9639-68388fd4e8d6\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Murder and nonnegligent Manslaughter\"},\"renderers\":[{\"id\":\"46f50029-1a19-44cc-9671-9aab47788bd3\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"9438f92c-e971-4dd4-8bdc-2589c5b5d77e\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Legacy rape /1\"},\"renderers\":[{\"id\":\"966f7f73-032d-452d-951e-411ae73b3e6b\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"88d5eb8d-50ed-40e0-bd70-5b31fc924cb7\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Revised rape /2\"},\"renderers\":[{\"id\":\"c7a311c8-939b-4a0a-af92-aa276d030450\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"d12f9bfd-fabb-48aa-b4de-058f0aeb562f\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Robbery\"},\"renderers\":[{\"id\":\"f4e3749b-73f5-4f71-a6a9-8aaa8af116cd\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"9f389714-0051-4823-b1f2-81bd05e2b80d\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Aggravated assault\"},\"renderers\":[{\"id\":\"1ebbf0be-4e02-4505-8f5c-8a036a8d7a2c\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"e1958ef1-55bd-435a-9f01-5531510e82c5\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Property crime total\"},\"renderers\":[{\"id\":\"def0cc31-2b04-451c-aee6-c6de62290c8b\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"21569ab3-d751-4e3e-a270-57be3f9cd8c6\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Burglary\"},\"renderers\":[{\"id\":\"2b1ebda2-781b-4f48-bae7-011f9f66d68c\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"4fe5db2d-ac0a-4ba5-8a57-4c298e5213a2\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Larceny-theft\"},\"renderers\":[{\"id\":\"0222a438-1500-49ef-933f-1d29ffacb377\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"c4401f88-5479-4599-a9c5-80c4356d7541\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Motor vehicle theft\"},\"renderers\":[{\"id\":\"7523eca9-5e5e-44bf-82c4-26f373f72240\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"a4110645-eb4c-4e98-b29a-21ce6ed7f225\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Violent Crime rate\"},\"renderers\":[{\"id\":\"d6786f4b-b52d-4d39-baa1-10deb3cdde4b\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"c17ff8f6-a760-451c-be73-120f09d1af93\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Murder and nonnegligent manslaughter rate\"},\"renderers\":[{\"id\":\"cabe1516-3def-4b3c-b758-a38ac66b5539\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"731bb672-66c0-49cb-a6b0-84156a1db5aa\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Legacy rape rate /1\"},\"renderers\":[{\"id\":\"b6eb7c15-41ff-47e3-96d4-4e9efe4598b3\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"55eac807-bb54-4c4b-a77a-33daf539a886\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Revised rape rate /2\"},\"renderers\":[{\"id\":\"49c4ecce-0026-49fe-9fa0-fb5a6c66e9c1\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"aff14d38-bf06-4fa2-a403-3243c4e800e1\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Robbery rate\"},\"renderers\":[{\"id\":\"95191046-8709-4d7d-b136-ce3727bc8e07\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"d70bc198-99f1-45cf-a81a-f171837dfcca\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Aggravated assault rate\"},\"renderers\":[{\"id\":\"ca621036-fab4-4e6c-b02a-07f453037cbe\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"375e807a-cf46-4927-8757-85b651ca647d\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Property crime rate\"},\"renderers\":[{\"id\":\"be325be4-17a9-4e60-b176-f82adb8eff0c\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"18b9e366-b9ca-4235-ad3f-5016a69c497f\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Burglary rate\"},\"renderers\":[{\"id\":\"cb9a5f6f-ca4d-4934-8ca2-53d53354d122\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"6af4f93f-edd8-4b9d-92a8-0184ca18d92e\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Larceny-theft rate\"},\"renderers\":[{\"id\":\"b7de1103-3c54-4cdc-9e69-ebe5ab7f91fd\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"2ca8b4de-f37d-454c-b361-5d108372f51e\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"Motor vehicle theft rate\"},\"renderers\":[{\"id\":\"e5cdf0e0-378d-451c-a9e6-af48a77db112\"}]}}]}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"943d4599-fcdd-457d-b8f0-8011d6b3c730\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"b66ac9f6-9af5-4b92-8039-d8f00a6eed6d\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"d0f3f587-86f5-4cfc-add9-4aae6b54f3e8\"},\"axis_label\":\"\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"6852fbc4-02d4-4f6d-a407-f16bcb29b428\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"8d4116f4-efbf-46e7-bb8a-de4255912649\",\"attributes\":{\"axis\":{\"id\":\"943d4599-fcdd-457d-b8f0-8011d6b3c730\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"aaf5f98b-c972-4f69-a0b6-fa7648ace5b2\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"2025fc95-b9c1-43c5-9777-07c9f19e916c\"},\"grid_line_color\":null}}],\"min_border_top\":10,\"min_border_bottom\":10,\"min_border_left\":10,\"min_border_right\":10,\"output_backend\":\"webgl\"}}]}}]}},{\"type\":\"object\",\"name\":\"Spacer\",\"id\":\"f8d77cf6-40c4-487d-8c6e-6a1db8f30b24\",\"attributes\":{\"name\":\"HSpacer01248\",\"stylesheets\":[\"\\n:host(.pn-loading).arc:before, .pn-loading.arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"7e9219b3-72a4-486d-8d24-df691cf4b72f\"},\"\\n .scrolling {\\n overflow: scroll;\\n }\\n \",{\"id\":\"0115e5f4-d064-41e8-9df0-dae41e9dbed8\"},{\"id\":\"e82c9afd-26b8-4b58-a74a-233e19fa8374\"}],\"margin\":0,\"sizing_mode\":\"stretch_width\",\"align\":\"start\"}}]}},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"c9bb6236-3e28-4419-98c0-2930097dda54\",\"attributes\":{\"plot_id\":\"cd8efe70-1c6e-44be-a1da-3354d2afa036\",\"comm_id\":\"adce107b67394b159d92de1137dfb6c9\",\"client_comm_id\":\"7ecd9f1ae1ef43058506c0dbdc35840c\"}},{\"type\":\"object\",\"name\":\"panel.models.location.Location\",\"id\":\"5ccc0f43-cec2-45e0-94e8-bbebcd76def8\",\"attributes\":{\"reload\":false}}],\"callbacks\":{\"type\":\"map\"}}};\n",
" var render_items = [{\"docid\":\"25c9cea3-879a-4c78-8f39-842fd3a667e5\",\"roots\":{\"cd8efe70-1c6e-44be-a1da-3354d2afa036\":\"c89d3448-e81a-4999-bef9-1bedb59f9a92\"},\"root_ids\":[\"cd8efe70-1c6e-44be-a1da-3354d2afa036\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.')\n",
" const is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1\n",
" function embed_document(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
" for (const render_item of render_items) {\n",
" for (const root_id of render_item.root_ids) {\n",
"\tconst id_el = document.getElementById(root_id)\n",
"\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",
"\t const root_el = id_el.children[0]\n",
"\t root_el.id = root_el.id + '-rendered'\n",
"\t}\n",
" }\n",
" }\n",
" }\n",
" function get_bokeh(root) {\n",
" if (root.Bokeh === undefined) {\n",
" return null\n",
" } else if (root.Bokeh.version !== py_version && !is_dev) {\n",
" if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",
"\treturn null\n",
" }\n",
" return root.Bokeh.versions.get(py_version);\n",
" } else if (root.Bokeh.version === py_version) {\n",
" return root.Bokeh\n",
" }\n",
" return null\n",
" }\n",
" function is_loaded(root) {\n",
" var Bokeh = get_bokeh(root)\n",
" return (Bokeh != null && Bokeh.Panel !== undefined)\n",
" }\n",
" if (is_loaded(root)) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (is_loaded(root)) {\n",
" clearInterval(timer);\n",
" embed_document(root);\n",
" } else if (document.readyState == \"complete\") {\n",
" attempts++;\n",
" if (attempts > 200) {\n",
" clearInterval(timer);\n",
"\t var Bokeh = get_bokeh(root)\n",
"\t if (Bokeh == null || Bokeh.Panel == null) {\n",
" console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",
"\t } else {\n",
"\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",
"\t embed_document(root)\n",
"\t }\n",
" }\n",
" }\n",
" }, 25, root)\n",
" }\n",
"})(window);</script>"
],
"text/plain": [
"hvDataFrameExplorer(axes=Axes(explorer=..., height=None, legend='right', logx=False, logy=False, name='Axes01013', responsive=False, shared_axes=True, width=None, xlim=None, ylim=None), by=[], colormapping=Colormapping(clim=None, cmap='kbc_r', cnorm='linear', color=None, colorbar=None, explorer=..., name='Colormapping01077', rescale_discrete_levels=True, symmetric=False), groupby=[], kind='line', labels=Labels(clabel='', explorer=..., fontscale=1, name='Labels01124', rot=0, title='', xlabel='', ylabel=''), name='hvDataFrameExplorer00980', operations=Operations(aggregator=None, datashade=False, dynspread=False, explorer=..., name='Operations01168', rasterize=False, x_sampling=None, y_sampling=None), style=Style(alpha=1, explorer=..., name='Style01212'), x='index', y='Year', y_multi=[], z=None)"
]
},
"execution_count": 11,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "cd8efe70-1c6e-44be-a1da-3354d2afa036"
}
},
"output_type": "execute_result"
}
],
"source": [
"# \"transform\" the CSV to ray to pandas to hvplot, with explorer\n",
"reader2.transform[\"pandas:DataFrame\"].transform[\"hvplot:hvPlotTabular\"].read(explorer=True)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "da7b8675",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-06-08 11:36:49,774\tWARNING read_api.py:358 -- ⚠️ The number of blocks in this dataset (1) limits its parallelism to 1 concurrent tasks. This is much less than the number of available CPU slots in the cluster. Use `.repartition(n)` to increase the number of dataset blocks.\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Read progress 0: 0%| | 0/1 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div><strong>Dask DataFrame Structure:</strong></div>\n",
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Year</th>\n",
" <th>Population</th>\n",
" <th>Violent crime total</th>\n",
" <th>Murder and nonnegligent Manslaughter</th>\n",
" <th>Legacy rape /1</th>\n",
" <th>Revised rape /2</th>\n",
" <th>Robbery</th>\n",
" <th>Aggravated assault</th>\n",
" <th>Property crime total</th>\n",
" <th>Burglary</th>\n",
" <th>Larceny-theft</th>\n",
" <th>Motor vehicle theft</th>\n",
" <th>Violent Crime rate</th>\n",
" <th>Murder and nonnegligent manslaughter rate</th>\n",
" <th>Legacy rape rate /1</th>\n",
" <th>Revised rape rate /2</th>\n",
" <th>Robbery rate</th>\n",
" <th>Aggravated assault rate</th>\n",
" <th>Property crime rate</th>\n",
" <th>Burglary rate</th>\n",
" <th>Larceny-theft rate</th>\n",
" <th>Motor vehicle theft rate</th>\n",
" </tr>\n",
" <tr>\n",
" <th>npartitions=1</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th></th>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>int64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" <td>float64</td>\n",
" </tr>\n",
" <tr>\n",
" <th></th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
"<div>Dask Name: from-delayed, 2 graph layers</div>"
],
"text/plain": [
"Dask DataFrame Structure:\n",
" Year Population Violent crime total Murder and nonnegligent Manslaughter Legacy rape /1 Revised rape /2 Robbery Aggravated assault Property crime total Burglary Larceny-theft Motor vehicle theft Violent Crime rate Murder and nonnegligent manslaughter rate Legacy rape rate /1 Revised rape rate /2 Robbery rate Aggravated assault rate Property crime rate Burglary rate Larceny-theft rate Motor vehicle theft rate\n",
"npartitions=1 \n",
" int64 int64 int64 int64 int64 int64 int64 int64 int64 int64 int64 int64 float64 float64 float64 float64 float64 float64 float64 float64 float64 float64\n",
" ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...\n",
"Dask Name: from-delayed, 2 graph layers"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# let's use the Ray reader to make a dask dataframe, since I can\n",
"reader2.transform[\"dask.dataframe:DataFrame\"].read()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "807f55cd",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Transformers for dask.dataframe:DataFrame:\n",
"{'dask.dataframe:DataFrame': <function df_select_columns at 0x1265a35b0>,\n",
" 'hvplot:hvPlotTabular': <function daskdf_to_hvplot at 0x1265a2d40>,\n",
" 'intake.readers.datatypes:FileData': <function pandas_to_parquet at 0x1265a36d0>,\n",
" 'pandas:DataFrame': <function daskdf_to_pandas at 0x1265a2c20>}"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# and what can I do with one of those?\n",
"reader2.transform[\"dask.dataframe:DataFrame\"].transform"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "6baeacd0",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2023-06-08 11:36:50,368\tWARNING read_api.py:358 -- ⚠️ The number of blocks in this dataset (1) limits its parallelism to 1 concurrent tasks. This is much less than the number of available CPU slots in the cluster. Use `.repartition(n)` to increase the number of dataset blocks.\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Read progress 0: 0%| | 0/1 [00:00<?, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"Parquet(metadata={}, url='out.parq', storage_options=None)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# dask's parquet writer, returns a new datatype instance\n",
"reader2.transform[\"dask.dataframe:DataFrame\"].transform.pandas_to_parquet(url=\"out.parq\").read()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "7a5183f0",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'importable': {intake.readers.readers.AwkwardJSON,\n",
" intake.readers.readers.AwkwardParquet,\n",
" intake.readers.readers.DaskAwkwardParquet,\n",
" intake.readers.readers.DaskParquet,\n",
" intake.readers.readers.DuckParquet,\n",
" intake.readers.readers.PandasParquet,\n",
" intake.readers.readers.RayParquet},\n",
" 'not_importable': {intake.readers.readers.SparkParquet}}"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# which I could then read with these other things\n",
"intake.readers.readers.recommend(_)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bb6f8db7",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.9"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment