Skip to content

Instantly share code, notes, and snippets.

@rsignell-usgs
Created October 18, 2023 00:33
Show Gist options
  • Save rsignell-usgs/01f5ce013eb89424d5af2c18236372b6 to your computer and use it in GitHub Desktop.
Save rsignell-usgs/01f5ce013eb89424d5af2c18236372b6 to your computer and use it in GitHub Desktop.
xarray_datetime_picker.ipynb
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "de83053c-36d0-46b0-be52-2d3168085f7e",
"metadata": {},
"source": [
"# Try to use DatetimePicker widget for time dimension"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "eb8cfeda-0c90-472f-880d-1bdc600b198d",
"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.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\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': {'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': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\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 + 9;\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['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n",
" var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/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.2.3/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.2.3/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://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n",
" var js_modules = [];\n",
" var js_exports = {};\n",
" var css_urls = [];\n",
" var inline_js = [ 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.2.2'.replace('rc', '-rc.').replace('.dev', '-dev.');\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': {'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': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\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 + 9;\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['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.3/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.3/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.2.3/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.2.3/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://cdn.bokeh.org/bokeh/release/bokeh-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.2.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.2.min.js\", \"https://cdn.holoviz.org/panel/1.2.3/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [];\n var inline_js = [ 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(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",
"}\n",
"\n",
"/* Override VSCode background color */\n",
".cell-output-ipywidget-background:has(\n",
" > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",
" ),\n",
".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",
" background-color: transparent !important;\n",
"}\n",
"</style>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import hvplot.xarray \n",
"import xarray as xr\n",
"import panel as pn\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "402fa4ba-cb38-404b-b27d-35b7634530f6",
"metadata": {},
"outputs": [],
"source": [
"xr_ds = xr.tutorial.open_dataset('air_temperature')\n",
"\n",
"xr_ds = xr_ds.isel(time=slice(0,5)) # just first 5 time values for simplicity"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "ab54bc70-2156-4c7c-8c08-448b4b5b74c0",
"metadata": {},
"outputs": [],
"source": [
"viz = xr_ds['air'].hvplot(x='lon', y='lat')"
]
},
{
"cell_type": "markdown",
"id": "2e718bcb-0ea7-41f4-a410-2b5f6982ef07",
"metadata": {},
"source": [
"## Plot using selection widget works fine:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "cc454c69-0176-481c-86ff-08d79be5846a",
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='p1002'>\n",
" <div id=\"a7843a2d-16f8-4995-a66d-0739ae8ce2ef\" data-root-id=\"p1002\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"fbf681c9-24cb-4742-a1ef-712f6bec2591\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1002\",\"attributes\":{\"name\":\"Row00819\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-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\":\"p1061\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1066\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1059\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1060\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/bundled/theme/native.css\"}}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1010\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1003\",\"attributes\":{\"tags\":[[[\"lon\",\"Longitude\",\"degrees_east\"]],[]],\"start\":198.75,\"end\":331.25,\"reset_start\":198.75,\"reset_end\":331.25}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1004\",\"attributes\":{\"tags\":[[[\"lat\",\"Latitude\",\"degrees_north\"]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":13.75,\"end\":76.25,\"reset_start\":13.75,\"reset_end\":76.25}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1020\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1021\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1013\",\"attributes\":{\"text\":\"Time: 2013-01-01 00:00:00\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1050\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1038\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1039\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1040\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[198.75]],[\"y\",[13.75]],[\"dw\",[132.5]],[\"dh\",[62.5]],[\"image\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"HyWUQx9llEPNjJRDAICUQzNzlEMzM5RDAACUQ5nZk0MAwJNDM7OTQ5mZk0OZmZNDAICTQwDAk0OZ2ZNDM7OTQzMzlEMfZZRDH2WUQx+llEMfJZVDzQyWQwCAlkPNTJdDmRmXQzMzlkMAwJZDzYyVQ80MlEMAAJRDM/OTQwDAlUOZmZZDM7OVQ5nZlUMAwJVDM7OVQwDAlUMzc5VDmZmVQwCAlUOZmZVDH+WVQ5nZlUPNjJVDmVmVQ81MlUMAAJVDH+WUQ83MlEMzc5RDH2WUQ81MlEMz85NDmRmUQx9llEMAQJRDzQyUQ82Mk0PNTJNDMzOTQx/lkkMf5ZJDH+WSQx+lkkMfZZJDM7OSQ80Mk0MzM5NDAECTQzPzkkPNTJNDzcyTQwCAlEOZ2ZVDHyWWQzOzlUPNDJRDzQyTQx8llUMAAJVDH2WTQwBAlEMAQJVDM/OVQzPzlUMzs5VDM/OVQwBAlUMAAJVDH2WVQ5lZlUMAgJVDM3OVQ81MlUMzM5VDMzOVQzNzlUPNTJVDM/OUQzOzlEMzc5RDHyWUQzPzk0Mz85NDmZmTQ81MlEOZGZRDMzOUQwBAlEMAwJNDAACTQ83MkkMzs5JDH2WSQzNzkkPNTJJDmRmSQ5kZkkPNDJJDAACSQ80MkkMf5ZFDAACSQwDAkkMf5ZJDAMCTQx9llUMzM5RDzQySQx9lkUMAQJJDzcyUQ5mZlUMzs5RDzcyUQzPzlEOZGZVDzQyVQx/llEPNDJVDzYyUQ82MlEMAAJVDM/OUQwAAlUPNDJVDzQyVQ80MlUMzM5VDH2WVQwAAlUMfpZRDmZmUQ5lZlEMf5ZNDM7OTQ82Mk0OZWZNDAICUQ5lZlEPNDJRDM/OTQzNzk0Mzs5JDH2WSQzMzkkOZGZJDmRmSQwDAkUPNjJFDM3ORQ5lZkUMfZZFDM3ORQ5lZkUMAgJFDH6WRQzOzkUMAAJNDM7OTQwAAkUMzs49DAACSQ83Mk0MfZZRDmVmUQ5kZlEPNTJRDM3OUQ5mZlEMzM5RDAMCTQx/lk0Mz85NDAACUQzMzlEPNTJRDH2WUQ5lZlEPNjJRDAMCUQx/llEMz85RDM7OUQwCAlEMzc5RDHyWUQ83Mk0PNjJNDzYyTQzNzk0Mzs5NDmdmTQx/lk0Mz85NDM7OTQwAAk0Mzc5JDAECSQ5kZkkMAwJFDAICRQzNzkUMzM5FDzQyRQ5kZkUMAAJFDM/OQQ5nZkEPNzJBDMzORQzNzkUOZ2Y9DMzOOQwBAkEPNjJNDMzOUQzOzk0MfpZNDH6WTQwDAk0MfpZNDM3OTQwBAk0MAQJNDmVmTQx8lk0Mf5ZJDAACTQzMzk0OZWZNDAICTQ83Mk0MfJZRDzYyUQ5nZlEOZmZRDMzOUQ80MlEMf5ZNDH6WTQ5lZk0OZWZNDHyWTQx/lkkPNDJNDzUyTQwCAk0Mzs5NDmVmTQ5mZkkMzM5JDzQySQx+lkUMfZZFDMzORQx/lkEMAwJBDH2WQQzMzkEPNjJBDmZmQQx/lkEMfJZFDH2WPQx/ljEMAwI1DMzORQ5nZkkMzc5JDAICSQx/lkkOZ2ZJDAICSQ5nZkUMfpZFDHyWSQzNzkkMzM5JDmdmRQzPzkUMfJZJDmRmSQ5kZkkMfZZJDzcySQ81Mk0OZ2ZNDAECUQx8llEPNDJRDAACUQzOzk0MfZZNDHyWTQzPzkkMAwJJDzYySQx+lkkMfpZJDAMCSQwBAk0Mzc5NDAMCSQzPzkUMAwJFDAMCRQzNzkUOZ2ZBDM3OQQzMzkEMzs49DH6WPQx/lj0PNjI9DzYyPQ5kZj0MAwIxDzUyLQx8ljUMfZY9DAACQQwCAkEPNzJBDmVmQQwBAkEOZWZBDmdmPQx8lkEMAQJFDzYyRQx8lkUMz85BDHyWRQ5lZkUMzc5FDmZmRQwDAkUMf5ZFDmRmSQ82MkkMAAJNDAECTQzNzk0PNjJNDzUyTQwAAk0OZ2ZJDAMCSQ83MkkOZGZFDH2WRQzOzkUPNDJJDzYySQx/lkkPNzJJDH2WSQ80MkkMz85FDH6WRQwAAkUMfZZBDM7OPQ5kZj0MzM49DAECPQx+ljkOZGY5DAICMQ5mZiUPNzIhDAACLQ80MjUPNTI5DH2WPQx/ljkPNjI1DAICNQ5nZjUPNjI1DH+WNQ81Mj0MzM5BDH2WQQx9lkEMzc5BDM7OQQwAAkUMfJZFDMzORQwBAkUOZGZFDHyWRQ83MkUOZWZJDAICSQwDAkkMz85JDAMCSQwCAkkMzc5JDAICSQzPzj0MAAJBDHyWQQzOzkEMfZZFDmdmRQx8lkkPNTJJDAACSQzOzkUPNjJFDHyWRQzNzkEMfpY9DzUyPQ5kZj0Mz841DAACMQ82MikPNDIlDMzOHQx/lhkMAgIhDHyWKQwBAi0Mf5YtDmVmLQwCAikMAwIpDM3OLQwCAi0MAgItDHyWMQ81MjUOZmY5DAMCPQwCAkEMz85BDM/OQQwCAkEPNDJBDH+WPQzOzj0MAgI9DMzOQQ5lZkUMf5ZFDMzOSQwCAkkMfZZJDAECSQzMzkkMf5ZFDAECPQwBAj0OZ2Y5DHyWPQzPzj0MAgJBDM/OQQwBAkUMAAJFDM7OQQwDAkEMAgJBDAACQQwDAj0MAQI9DAECNQ83MiUMzc4ZDH+WEQ80MhUMzc4VDM3OFQ81MhUMfZYVDHyWGQx9lh0OZWYhDM7OIQ80MiUMAwIlDAACKQzOziUOZ2YlDH+WKQ82MjEMzM45DHyWPQzNzj0MAwI9DM7OPQwAAj0OZmY5DmdmOQwAAj0MAgI9DH6WQQx9lkUOZmZFDmdmRQzPzkUMf5ZFDM7ORQwBAkUPNTI5DM3OOQ5kZjkOZ2Y1DmRmOQwDAjkMfpY9DHyWQQzPzj0MfpY9DzYyPQzMzj0OZGY9DmRmPQwCAjUPNzIlDzQyGQwAAhEMAQINDM/OCQ80Mg0PNjINDM/ODQzMzhEOZmYRDAICFQ82MhkMzM4dDH+WHQzOziEMz84hDmdmIQ5kZiUMzc4lDAACKQwBAi0PNTIxDH6WMQwBAjUMf5Y1DzYyNQwAAjUOZWY1DAMCNQzMzjkMfZY9DAICQQwAAkUMfZZFDM7ORQzNzkUPNDJFDzcyQQx9ljUOZmY1DzUyNQzPzjEOZGY1DH+WNQwDAjkMz845DAMCOQ5mZjkOZWY5DmdmNQzPzjUPNDI5DH+WLQ83Mh0MAAIVDM3OEQ82Mg0Mzs4FDHyWBQ80Mg0MAQIVDH+WFQwBAhUOZWYRDAICDQ81Mg0PNjIRDM3OGQzOzh0Mzc4hDH+WIQwCAiEOZ2YdDH2WIQzNziUPNjIlDzYyJQ5kZikPNjIpDmdmKQ81Mi0PNjItDzQyMQ5mZjUMAQI9DHyWQQx+lkEMAAJFDmdmQQ82MkEMzc5BDAACMQ5lZjEOZGYxDzcyLQx8ljEMAAI1DH6WNQ83MjUOZ2Y1DmdmNQ5lZjUPNzIxDmRmNQx9ljUMfpYtDzUyIQ83MhUMfpYRDHyWDQ5mZgUPNDIJDMzOEQzNzhUOZ2YRDM7ODQwCAgkMz84BDAECAQ83MgUMAgIRDmRmGQwDAhkOZmYdDH+WHQzPzhkMAgIVDM3OEQx8lhEMz84RD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H6WBQx/lgEPMTH9DMzN8QwAAeUPMTHZD12N0Q8xMc0Mzs3JDmRlyQ5mZcUMAAHFDzMxwQ5kZcUMAAHJD12NzQ5kZdUPX43ZDAAB5QzMze0OZGX1D1+N9Q9djfEPXY3hDzMxyQwCAbkPMTG5DM7NzQ9fjfEOZmYJDmRmEQwAAgkOZmXpDzMxwQzMza0MzM2tDzExvQ5mZdEMzM3lDmRl9QzNzgEMAAHpDzMx5Q9fjeEMAgHdDAAB2Q9djdEOZGXND12NyQzMzckMAgHJDmRlzQwCAc0MAgHNDAABzQwAAckMAAHFDmRlwQzOzb0PMzG9DmRlwQ9djcEOZmXBDM7NwQwAAcUMzs3FDAABzQ5mZdEPMTHZD1+N3Q5kZeUPX43lD12N6QzMzekOZGXlDzMx2QzOzc0OZmXBDmRlvQzMzcEOZGXRDAIB5Q5kZfkMAAIBDzEx+Q5mZeUMzs3NDzExuQwCAakPXY2hD1+NnQzMzaUPXY2xDM7NxQ8zMc0MAgHRDM7N0QzMzdEPXY3ND12NyQzOzcUPMTHFDmRlxQ5kZcUMAAHFDAIBwQzOzb0Mzs25DM7NtQ5kZbUMzM21DAABuQ8xMb0Mzs3BDAAByQ9fjckMAgHND1+NzQ8xMdEMAAHVDzMx1Q5mZdkOZGXdDMzN3Q8zMdkMAAHZDmRl1Q8xMdEPX43NDAAB0Q5mZdEOZmXVDzMx2Q9fjd0PMTHhDmZl3Q9fjdUPXY3ND12NwQwCAbUMAAGtDMzNpQwAAaEPMzGdDzMxoQ8xMa0PMTG9DMzNxQwCAckMAgHNDAAB0Q5kZdEPX43NDmZlzQ5kZc0MAgHJD1+NxQzMzcUPMTHBDAIBvQ8zMbkMAgG5DM7NuQ5mZb0MAAHFD1+NyQ8zMdEMAgHZDzMx3Q5mZeEMAAHlDmRl5Q5kZeUMAAHlD1+N4QzOzeEOZmXhD12N4Q8xMeEPMTHhDmZl4QwAAeUMAgHlDmZl5Q5kZeUPMzHdD12N1QzMzckMAgG5DM7NqQ8xMZ0PMzGRDzExjQwAAY0MAgGNDzMxkQ5mZZkPMzGhDAIBrQ5mZbkM=\"},\"shape\":[25,53],\"dtype\":\"float32\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1051\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1052\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1044\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"type\":\"object\",\"name\":\"LinearColorMapper\",\"id\":\"p1037\",\"attributes\":{\"palette\":[\"#b3fef5\",\"#b0fef5\",\"#adfdf5\",\"#a9fcf5\",\"#a6fbf6\",\"#a3faf6\",\"#a0faf6\",\"#9df9f6\",\"#9af8f6\",\"#97f7f6\",\"#93f7f6\",\"#90f6f6\",\"#8df5f6\",\"#8af4f7\",\"#87f3f7\",\"#83f2f7\",\"#80f2f7\",\"#7df1f7\",\"#79f0f7\",\"#76eff7\",\"#73eef7\",\"#6fedf8\",\"#6cecf8\",\"#68ecf8\",\"#65ebf8\",\"#61eaf8\",\"#5ee9f8\",\"#5ae8f8\",\"#57e7f8\",\"#53e6f8\",\"#50e5f9\",\"#4ce4f9\",\"#49e3f9\",\"#45e2f9\",\"#42e1f9\",\"#3ee0f9\",\"#3bdff9\",\"#38def9\",\"#35ddf9\",\"#32dcf9\",\"#30dbfa\",\"#2ed9fa\",\"#2dd8fa\",\"#2cd7fa\",\"#2bd6fa\",\"#2bd5fa\",\"#2ad3fa\",\"#2ad2fa\",\"#29d1fa\",\"#29d0fb\",\"#29cffb\",\"#28cdfb\",\"#28ccfb\",\"#28cbfb\",\"#28cafb\",\"#28c8fb\",\"#28c7fb\",\"#29c6fb\",\"#29c5fb\",\"#29c4fb\",\"#29c2fb\",\"#2ac1fb\",\"#2ac0fb\",\"#2bbffb\",\"#2bbdfc\",\"#2cbcfc\",\"#2dbbfc\",\"#2db9fc\",\"#2eb8fc\",\"#2fb7fc\",\"#2fb6fc\",\"#30b4fc\",\"#31b3fc\",\"#32b2fc\",\"#32b0fc\",\"#33affc\",\"#33aefc\",\"#34adfc\",\"#34abfc\",\"#34aafc\",\"#35a9fc\",\"#35a8fc\",\"#35a6fc\",\"#35a5fc\",\"#35a4fc\",\"#35a3fc\",\"#35a1fc\",\"#35a0fc\",\"#359ffc\",\"#359dfc\",\"#359cfc\",\"#359bfc\",\"#349afd\",\"#3498fd\",\"#3497fd\",\"#3396fd\",\"#3395fd\",\"#3293fd\",\"#3292fd\",\"#3191fd\",\"#3090fd\",\"#308ffd\",\"#2f8dfd\",\"#2f8cfd\",\"#2e8bfd\",\"#2e8afd\",\"#2d88fd\",\"#2d87fd\",\"#2c86fd\",\"#2c84fd\",\"#2c83fd\",\"#2c82fd\",\"#2b81fd\",\"#2b7ffd\",\"#2b7efd\",\"#2b7dfd\",\"#2b7bfd\",\"#2b7afd\",\"#2b79fd\",\"#2b77fd\",\"#2b76fd\",\"#2b75fd\",\"#2b73fd\",\"#2c72fd\",\"#2c71fd\",\"#2c6ffd\",\"#2c6efd\",\"#2d6cfd\",\"#2d6bfd\",\"#2d6afc\",\"#2e68fc\",\"#2e67fc\",\"#2e65fc\",\"#2e64fc\",\"#2f62fc\",\"#2f61fc\",\"#2f5ffc\",\"#2f5efc\",\"#2f5dfc\",\"#2f5bfc\",\"#2f5afc\",\"#2f58fb\",\"#2f57fb\",\"#2f55fb\",\"#2f53fb\",\"#2f52fb\",\"#2f50fb\",\"#2f4ffb\",\"#2f4dfb\",\"#2e4cfb\",\"#2e4afb\",\"#2e48fb\",\"#2e47fa\",\"#2d45fa\",\"#2d43fa\",\"#2d42fa\",\"#2d40fa\",\"#2c3efa\",\"#2c3dfa\",\"#2b3bf9\",\"#2b39f9\",\"#2a37f9\",\"#2a36f8\",\"#2934f8\",\"#2832f7\",\"#2831f7\",\"#272ff6\",\"#262ef5\",\"#252cf5\",\"#252af4\",\"#2429f3\",\"#2327f2\",\"#2226f1\",\"#2124f0\",\"#2023ef\",\"#1f22ee\",\"#1e20ed\",\"#1d1feb\",\"#1c1eea\",\"#1b1ce9\",\"#1a1be7\",\"#181ae6\",\"#1719e5\",\"#1618e3\",\"#1417e1\",\"#1316e0\",\"#1215de\",\"#1014dc\",\"#0f13db\",\"#0e12d9\",\"#0d11d7\",\"#0c10d5\",\"#0b0fd3\",\"#0a0ed1\",\"#090dd0\",\"#080dce\",\"#080ccc\",\"#070bca\",\"#070ac8\",\"#0709c6\",\"#0708c4\",\"#0707c2\",\"#0707bf\",\"#0806bd\",\"#0806bb\",\"#0905b9\",\"#0904b7\",\"#0a04b5\",\"#0a04b2\",\"#0b03b0\",\"#0c03ae\",\"#0d02ab\",\"#0e02a9\",\"#0e02a7\",\"#0f02a4\",\"#0f01a2\",\"#1001a0\",\"#10019d\",\"#10019b\",\"#100199\",\"#100197\",\"#100194\",\"#0f0192\",\"#0f0190\",\"#0f018e\",\"#0e018b\",\"#0e0189\",\"#0d0187\",\"#0d0185\",\"#0c0183\",\"#0b0181\",\"#0b017e\",\"#0a017c\",\"#09017a\",\"#090178\",\"#080276\",\"#070274\",\"#060272\",\"#060270\",\"#05026e\",\"#04026c\",\"#030269\",\"#030267\",\"#020265\",\"#010263\",\"#010261\",\"#00025f\",\"#00025d\",\"#00025b\",\"#000259\",\"#000257\",\"#000255\",\"#000154\",\"#000152\",\"#000150\",\"#00004e\"],\"nan_color\":\"rgba(0, 0, 0, 0)\",\"low\":227.0,\"high\":302.6000061035156}}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1056\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":1.0},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1037\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1046\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":0.1},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1037\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1048\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":0.2},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1037\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1019\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1008\",\"attributes\":{\"tags\":[\"hv_created\"],\"zoom_together\":\"none\"}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1009\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p1050\"}],\"tooltips\":[[\"Longitude (degrees_east)\",\"$x\"],[\"Latitude (degrees_north)\",\"$y\"],[\"4xDaily Air temperature at sigma level 995 (degK)\",\"@image\"]]}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1032\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1033\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1034\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1035\",\"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\":\"p1036\"}],\"active_drag\":{\"id\":\"p1033\"},\"active_scroll\":{\"id\":\"p1008\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1027\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1028\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1029\"},\"axis_label\":\"Latitude (degrees_north)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1030\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"ColorBar\",\"id\":\"p1054\",\"attributes\":{\"location\":[0,0],\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1053\",\"attributes\":{\"mantissas\":[1,2,5]}},\"major_label_policy\":{\"type\":\"object\",\"name\":\"NoOverlap\",\"id\":\"p1055\"},\"label_standoff\":8,\"major_tick_line_color\":\"black\",\"bar_line_color\":\"black\",\"color_mapper\":{\"id\":\"p1037\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1022\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1023\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1024\"},\"axis_label\":\"Longitude (degrees_east)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1025\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1026\",\"attributes\":{\"axis\":{\"id\":\"p1022\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1031\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1027\"},\"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\":\"panel.models.layout.Column\",\"id\":\"p1058\",\"attributes\":{\"name\":\"WidgetBox00822\",\"css_classes\":[\"panel-widget-box\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1061\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1065\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/widgetbox.css\"}},{\"id\":\"p1066\"},{\"id\":\"p1059\"},{\"id\":\"p1060\"}],\"margin\":0,\"align\":[\"end\",\"start\"],\"children\":[{\"type\":\"object\",\"name\":\"panel.models.widgets.CustomSelect\",\"id\":\"p1063\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1061\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1062\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/select.css\"}},{\"id\":\"p1059\"},{\"id\":\"p1060\"}],\"width\":250,\"min_width\":250,\"margin\":[20,20,20,20],\"align\":\"start\",\"title\":\"Time\",\"options\":[[\"2013-01-01T00:00:00.000000000\",\"2013-01-01 00:00:00\"],[\"2013-01-01T06:00:00.000000000\",\"2013-01-01 06:00:00\"],[\"2013-01-01T12:00:00.000000000\",\"2013-01-01 12:00:00\"],[\"2013-01-01T18:00:00.000000000\",\"2013-01-01 18:00:00\"],[\"2013-01-02T00:00:00.000000000\",\"2013-01-02 00:00:00\"]],\"value\":\"2013-01-01T00:00:00.000000000\"}}]}}]}},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"p1069\",\"attributes\":{\"plot_id\":\"p1002\",\"comm_id\":\"df0c475b1348439a9e1436acc386b79b\",\"client_comm_id\":\"2b05773b21fc43a09a6ecac134fabd16\"}},{\"type\":\"object\",\"name\":\"panel.models.location.Location\",\"id\":\"p1070\",\"attributes\":{\"reload\":false}}],\"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\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"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}]}]}};\n",
" var render_items = [{\"docid\":\"fbf681c9-24cb-4742-a1ef-712f6bec2591\",\"roots\":{\"p1002\":\"a7843a2d-16f8-4995-a66d-0739ae8ce2ef\"},\"root_ids\":[\"p1002\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\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": [
"Row\n",
" [0] HoloViews(DynamicMap, height=300, sizing_mode='fixed', widgets={'time': <class '...}, width=700)\n",
" [1] WidgetBox(align=('end', 'start'))\n",
" [0] Select(margin=(20, 20, 20, 20), name='Time', options=OrderedDict([('2013-01-01 ...]), value=numpy.datetime64('2013-01-..., width=250)"
]
},
"execution_count": 4,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "p1002"
}
},
"output_type": "execute_result"
}
],
"source": [
"pn.panel(viz, widgets={'time': pn.widgets.Select}) # Use Selection widget"
]
},
{
"cell_type": "markdown",
"id": "9b809bcf-85df-4994-b0d3-3b76cefff331",
"metadata": {},
"source": [
"## Plot just specifying widget as DatetimePicker fails because it doesn't understand datetime64"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "a4bc6c95-9c87-421f-b383-240c6a5aefa5",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING:param.Time: Setting non-parameter attribute options=OrderedDict([('2013-01-01 00:00:00', numpy.datetime64('2013-01-01T00:00:00.000000000')), ('2013-01-01 06:00:00', numpy.datetime64('2013-01-01T06:00:00.000000000')), ('2013-01-01 12:00:00', numpy.datetime64('2013-01-01T12:00:00.000000000')), ('2013-01-01 18:00:00', numpy.datetime64('2013-01-01T18:00:00.000000000')), ('2013-01-02 00:00:00', numpy.datetime64('2013-01-02T00:00:00.000000000'))]) using a mechanism intended only for parameters\n"
]
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"ename": "ValueError",
"evalue": "failed to validate DatetimePicker(id='p1132', ...).value: expected either None or a value of type String, got numpy.datetime64('2013-01-01T00:00:00.000000000')",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/IPython/core/formatters.py:974\u001b[0m, in \u001b[0;36mMimeBundleFormatter.__call__\u001b[0;34m(self, obj, include, exclude)\u001b[0m\n\u001b[1;32m 971\u001b[0m method \u001b[38;5;241m=\u001b[39m get_real_method(obj, \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprint_method)\n\u001b[1;32m 973\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 974\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43minclude\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minclude\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mexclude\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mexclude\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 975\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 976\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/viewable.py:819\u001b[0m, in \u001b[0;36mViewable._repr_mimebundle_\u001b[0;34m(self, include, exclude)\u001b[0m\n\u001b[1;32m 817\u001b[0m doc \u001b[38;5;241m=\u001b[39m Document()\n\u001b[1;32m 818\u001b[0m comm \u001b[38;5;241m=\u001b[39m state\u001b[38;5;241m.\u001b[39m_comm_manager\u001b[38;5;241m.\u001b[39mget_server_comm()\n\u001b[0;32m--> 819\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_render_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 820\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m config\u001b[38;5;241m.\u001b[39membed:\n\u001b[1;32m 821\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m render_model(model)\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/viewable.py:737\u001b[0m, in \u001b[0;36mViewable._render_model\u001b[0;34m(self, doc, comm)\u001b[0m\n\u001b[1;32m 735\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m comm \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 736\u001b[0m comm \u001b[38;5;241m=\u001b[39m state\u001b[38;5;241m.\u001b[39m_comm_manager\u001b[38;5;241m.\u001b[39mget_server_comm()\n\u001b[0;32m--> 737\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_root\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 739\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design\u001b[38;5;241m.\u001b[39mtheme\u001b[38;5;241m.\u001b[39mbokeh_theme:\n\u001b[1;32m 740\u001b[0m doc\u001b[38;5;241m.\u001b[39mtheme \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design\u001b[38;5;241m.\u001b[39mtheme\u001b[38;5;241m.\u001b[39mbokeh_theme\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/layout/base.py:306\u001b[0m, in \u001b[0;36mPanel.get_root\u001b[0;34m(self, doc, comm, preprocess)\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mget_root\u001b[39m(\n\u001b[1;32m 303\u001b[0m \u001b[38;5;28mself\u001b[39m, doc: Optional[Document] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m, comm: Optional[Comm] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 304\u001b[0m preprocess: \u001b[38;5;28mbool\u001b[39m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[1;32m 305\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Model:\n\u001b[0;32m--> 306\u001b[0m root \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_root\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mpreprocess\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 307\u001b[0m \u001b[38;5;66;03m# ALERT: Find a better way to handle this\u001b[39;00m\n\u001b[1;32m 308\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mhasattr\u001b[39m(root, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mstyles\u001b[39m\u001b[38;5;124m'\u001b[39m) \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124moverflow-x\u001b[39m\u001b[38;5;124m'\u001b[39m \u001b[38;5;129;01min\u001b[39;00m root\u001b[38;5;241m.\u001b[39mstyles:\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/viewable.py:659\u001b[0m, in \u001b[0;36mRenderable.get_root\u001b[0;34m(self, doc, comm, preprocess)\u001b[0m\n\u001b[1;32m 657\u001b[0m wrapper \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_design\u001b[38;5;241m.\u001b[39m_wrapper(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 658\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m wrapper \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n\u001b[0;32m--> 659\u001b[0m root \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 660\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m preprocess:\n\u001b[1;32m 661\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_preprocess(root)\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/layout/base.py:174\u001b[0m, in \u001b[0;36mPanel._get_model\u001b[0;34m(self, doc, root, parent, comm)\u001b[0m\n\u001b[1;32m 172\u001b[0m root \u001b[38;5;241m=\u001b[39m root \u001b[38;5;129;01mor\u001b[39;00m model\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_models[root\u001b[38;5;241m.\u001b[39mref[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m (model, parent)\n\u001b[0;32m--> 174\u001b[0m objects, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_objects\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 175\u001b[0m props \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_properties(doc)\n\u001b[1;32m 176\u001b[0m props[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_property_mapping[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mobjects\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m objects\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/layout/base.py:156\u001b[0m, in \u001b[0;36mPanel._get_objects\u001b[0;34m(self, model, old_objects, doc, root, comm)\u001b[0m\n\u001b[1;32m 154\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 155\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 156\u001b[0m child \u001b[38;5;241m=\u001b[39m \u001b[43mpane\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 157\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RerenderError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 158\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m e\u001b[38;5;241m.\u001b[39mlayout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m e\u001b[38;5;241m.\u001b[39mlayout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/layout/base.py:174\u001b[0m, in \u001b[0;36mPanel._get_model\u001b[0;34m(self, doc, root, parent, comm)\u001b[0m\n\u001b[1;32m 172\u001b[0m root \u001b[38;5;241m=\u001b[39m root \u001b[38;5;129;01mor\u001b[39;00m model\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_models[root\u001b[38;5;241m.\u001b[39mref[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m (model, parent)\n\u001b[0;32m--> 174\u001b[0m objects, _ \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_objects\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 175\u001b[0m props \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_properties(doc)\n\u001b[1;32m 176\u001b[0m props[\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_property_mapping[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mobjects\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m objects\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/layout/base.py:156\u001b[0m, in \u001b[0;36mPanel._get_objects\u001b[0;34m(self, model, old_objects, doc, root, comm)\u001b[0m\n\u001b[1;32m 154\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 155\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 156\u001b[0m child \u001b[38;5;241m=\u001b[39m \u001b[43mpane\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_model\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mroot\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mmodel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcomm\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 157\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m RerenderError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 158\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m e\u001b[38;5;241m.\u001b[39mlayout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;129;01mand\u001b[39;00m e\u001b[38;5;241m.\u001b[39mlayout \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28mself\u001b[39m:\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/panel/widgets/base.py:134\u001b[0m, in \u001b[0;36mWidget._get_model\u001b[0;34m(self, doc, root, parent, comm)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_get_model\u001b[39m(\n\u001b[1;32m 131\u001b[0m \u001b[38;5;28mself\u001b[39m, doc: Document, root: Optional[Model] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 132\u001b[0m parent: Optional[Model] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m, comm: Optional[Comm] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 133\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Model:\n\u001b[0;32m--> 134\u001b[0m model \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_widget_type\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_get_properties\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdoc\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 135\u001b[0m root \u001b[38;5;241m=\u001b[39m root \u001b[38;5;129;01mor\u001b[39;00m model\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_models[root\u001b[38;5;241m.\u001b[39mref[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m]] \u001b[38;5;241m=\u001b[39m (model, parent)\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/models/widgets/inputs.py:83\u001b[0m, in \u001b[0;36mInputWidget.__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 82\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 83\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/models/widgets/widget.py:57\u001b[0m, in \u001b[0;36mWidget.__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 56\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 57\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/models/layouts.py:97\u001b[0m, in \u001b[0;36mLayoutDOM.__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 97\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/models/ui/ui_element.py:61\u001b[0m, in \u001b[0;36mUIElement.__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 61\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/model/model.py:110\u001b[0m, in \u001b[0;36mModel.__init__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01min\u001b[39;00m kwargs:\n\u001b[1;32m 108\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minitializing \u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mid\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124m is not allowed\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 110\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 111\u001b[0m default_theme\u001b[38;5;241m.\u001b[39mapply_to_model(\u001b[38;5;28mself\u001b[39m)\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/core/has_props.py:295\u001b[0m, in \u001b[0;36mHasProps.__init__\u001b[0;34m(self, **properties)\u001b[0m\n\u001b[1;32m 293\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m value \u001b[38;5;129;01mis\u001b[39;00m Undefined \u001b[38;5;129;01mor\u001b[39;00m value \u001b[38;5;129;01mis\u001b[39;00m Intrinsic:\n\u001b[1;32m 294\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m\n\u001b[0;32m--> 295\u001b[0m \u001b[38;5;28;43msetattr\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 297\u001b[0m initialized \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(properties\u001b[38;5;241m.\u001b[39mkeys())\n\u001b[1;32m 298\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mproperties(_with_props\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m): \u001b[38;5;66;03m# avoid set[] for deterministic behavior\u001b[39;00m\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/core/has_props.py:327\u001b[0m, in \u001b[0;36mHasProps.__setattr__\u001b[0;34m(self, name, value)\u001b[0m\n\u001b[1;32m 325\u001b[0m properties \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mproperties(_with_props\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 326\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m name \u001b[38;5;129;01min\u001b[39;00m properties:\n\u001b[0;32m--> 327\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__setattr__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 329\u001b[0m descriptor \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m, name, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 330\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(descriptor, \u001b[38;5;28mproperty\u001b[39m): \u001b[38;5;66;03m# Python property\u001b[39;00m\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/core/property/descriptors.py:332\u001b[0m, in \u001b[0;36mPropertyDescriptor.__set__\u001b[0;34m(self, obj, value, setter)\u001b[0m\n\u001b[1;32m 329\u001b[0m class_name \u001b[38;5;241m=\u001b[39m obj\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__class__\u001b[39m\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[1;32m 330\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclass_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m is a readonly property\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m--> 332\u001b[0m value \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproperty\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mprepare_value\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 333\u001b[0m old \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get(obj)\n\u001b[1;32m 334\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set(obj, old, value, setter\u001b[38;5;241m=\u001b[39msetter)\n",
"File \u001b[0;32m/home/conda/users/bd2319cf4333f345a1cd12ec666552166ea6b7f9c8d73c7807050c6e88c2f494-20231011-145530-645692-242-pangeo/lib/python3.10/site-packages/bokeh/core/property/bases.py:364\u001b[0m, in \u001b[0;36mProperty.prepare_value\u001b[0;34m(self, owner, name, value, hint)\u001b[0m\n\u001b[1;32m 362\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 363\u001b[0m obj_repr \u001b[38;5;241m=\u001b[39m owner \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(owner, HasProps) \u001b[38;5;28;01melse\u001b[39;00m owner\u001b[38;5;241m.\u001b[39m\u001b[38;5;18m__name__\u001b[39m\n\u001b[0;32m--> 364\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfailed to validate \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mobj_repr\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00merror\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 366\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(owner, HasProps):\n\u001b[1;32m 367\u001b[0m obj \u001b[38;5;241m=\u001b[39m owner\n",
"\u001b[0;31mValueError\u001b[0m: failed to validate DatetimePicker(id='p1132', ...).value: expected either None or a value of type String, got numpy.datetime64('2013-01-01T00:00:00.000000000')"
]
},
{
"data": {
"text/plain": [
"Row\n",
" [0] HoloViews(DynamicMap, height=300, sizing_mode='fixed', widgets={'time': <class '...}, width=700)\n",
" [1] WidgetBox(align=('end', 'start'))\n",
" [0] DatetimePicker(margin=(20, 20, 20, 20), name='Time', value=numpy.datetime64('2013-01-..., width=250)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pn.panel(viz, widgets={'time': pn.widgets.DatetimePicker}) # Use Selection widget"
]
},
{
"cell_type": "markdown",
"id": "9229ca42-c6c7-431a-98ec-f8d19433efdb",
"metadata": {},
"source": [
"## Plot just specifying widget as DatetimePicker with datetimes fails because there is not enough space allocated to use the widget:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "5a2c13ef-6aaa-4571-9d79-0dfdc0ec7696",
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='p1133'>\n",
" <div id=\"e489b8c6-a05c-4b08-8aab-10677c0aceea\" data-root-id=\"p1133\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"1e648645-e46d-4bbd-843f-ce64e1da858d\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1133\",\"attributes\":{\"name\":\"Row00987\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-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\":\"p1192\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1196\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1190\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1191\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/bundled/theme/native.css\"}}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1141\",\"attributes\":{\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1134\",\"attributes\":{\"tags\":[[[\"lon\",\"Longitude\",\"degrees_east\"]],[]],\"start\":198.75,\"end\":331.25,\"reset_start\":198.75,\"reset_end\":331.25}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1135\",\"attributes\":{\"tags\":[[[\"lat\",\"Latitude\",\"degrees_north\"]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":13.75,\"end\":76.25,\"reset_start\":13.75,\"reset_end\":76.25}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1151\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1152\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1144\",\"attributes\":{\"text\":\"Time: 2013-01-01 00:00:00\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1181\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1169\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1170\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1171\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[198.75]],[\"y\",[13.75]],[\"dw\",[132.5]],[\"dh\",[62.5]],[\"image\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"HyWUQx9llEPNjJRDAICUQzNzlEMzM5RDAACUQ5nZk0MAwJNDM7OTQ5mZk0OZmZNDAICTQwDAk0OZ2ZNDM7OTQzMzlEMfZZRDH2WUQx+llEMfJZVDzQyWQwCAlkPNTJdDmRmXQzMzlkMAwJZDzYyVQ80MlEMAAJRDM/OTQwDAlUOZmZZDM7OVQ5nZlUMAwJVDM7OVQwDAlUMzc5VDmZmVQwCAlUOZmZVDH+WVQ5nZlUPNjJVDmVmVQ81MlUMAAJVDH+WUQ83MlEMzc5RDH2WUQ81MlEMz85NDmRmUQx9llEMAQJRDzQyUQ82Mk0PNTJNDMzOTQx/lkkMf5ZJDH+WSQx+lkkMfZZJDM7OSQ80Mk0MzM5NDAECTQzPzkkPNTJNDzcyTQwCAlEOZ2ZVDHyWWQzOzlUPNDJRDzQyTQx8llUMAAJVDH2WTQwBAlEMAQJVDM/OVQzPzlUMzs5VDM/OVQwBAlUMAAJVDH2WVQ5lZlUMAgJVDM3OVQ81MlUMzM5VDMzOVQzNzlUPNTJVDM/OUQzOzlEMzc5RDHyWUQzPzk0Mz85NDmZmTQ81MlEOZGZRDMzOUQwBAlEMAwJNDAACTQ83MkkMzs5JDH2WSQzNzkkPNTJJDmRmSQ5kZkkPNDJJDAACSQ80MkkMf5ZFDAACSQwDAkkMf5ZJDAMCTQx9llUMzM5RDzQySQx9lkUMAQJJDzcyUQ5mZlUMzs5RDzcyUQzPzlEOZGZVDzQyVQx/llEPNDJVDzYyUQ82MlEMAAJVDM/OUQwAAlUPNDJVDzQyVQ80MlUMzM5VDH2WVQwAAlUMfpZRDmZmUQ5lZlEMf5ZNDM7OTQ82Mk0OZWZNDAICUQ5lZlEPNDJRDM/OTQzNzk0Mzs5JDH2WSQzMzkkOZGZJDmRmSQwDAkUPNjJFDM3ORQ5lZkUMfZZFDM3ORQ5lZkUMAgJFDH6WRQzOzkUMAAJNDM7OTQwAAkUMzs49DAACSQ83Mk0MfZZRDmVmUQ5kZlEPNTJRDM3OUQ5mZlEMzM5RDAMCTQx/lk0Mz85NDAACUQzMzlEPNTJRDH2WUQ5lZlEPNjJRDAMCUQx/llEMz85RDM7OUQwCAlEMzc5RDHyWUQ83Mk0PNjJNDzYyTQzNzk0Mzs5NDmdmTQx/lk0Mz85NDM7OTQwAAk0Mzc5JDAECSQ5kZkkMAwJFDAICRQzNzkUMzM5FDzQyRQ5kZkUMAAJFDM/OQQ5nZkEPNzJBDMzORQzNzkUOZ2Y9DMzOOQwBAkEPNjJNDMzOUQzOzk0MfpZNDH6WTQwDAk0MfpZNDM3OTQwBAk0MAQJNDmVmTQx8lk0Mf5ZJDAACTQzMzk0OZWZNDAICTQ83Mk0MfJZRDzYyUQ5nZlEOZmZRDMzOUQ80MlEMf5ZNDH6WTQ5lZk0OZWZNDHyWTQx/lkkPNDJNDzUyTQwCAk0Mzs5NDmVmTQ5mZkkMzM5JDzQySQx+lkUMfZZFDMzORQx/lkEMAwJBDH2WQQzMzkEPNjJBDmZmQQx/lkEMfJZFDH2WPQx/ljEMAwI1DMzORQ5nZkkMzc5JDAICSQx/lkkOZ2ZJDAICSQ5nZkUMfpZFDHyWSQzNzkkMzM5JDmdmRQzPzkUMfJZJDmRmSQ5kZkkMfZZJDzcySQ81Mk0OZ2ZNDAECUQx8llEPNDJRDAACUQzOzk0MfZZNDHyWTQzPzkkMAwJJDzYySQx+lkkMfpZJDAMCSQwBAk0Mzc5NDAMCSQzPzkUMAwJFDAMCRQzNzkUOZ2ZBDM3OQQzMzkEMzs49DH6WPQx/lj0PNjI9DzYyPQ5kZj0MAwIxDzUyLQx8ljUMfZY9DAACQQwCAkEPNzJBDmVmQQwBAkEOZWZBDmdmPQx8lkEMAQJFDzYyRQx8lkUMz85BDHyWRQ5lZkUMzc5FDmZmRQwDAkUMf5ZFDmRmSQ82MkkMAAJNDAECTQzNzk0PNjJNDzUyTQwAAk0OZ2ZJDAMCSQ83MkkOZGZFDH2WRQzOzkUPNDJJDzYySQx/lkkPNzJJDH2WSQ80MkkMz85FDH6WRQwAAkUMfZZBDM7OPQ5kZj0MzM49DAECPQx+ljkOZGY5DAICMQ5mZiUPNzIhDAACLQ80MjUPNTI5DH2WPQx/ljkPNjI1DAICNQ5nZjUPNjI1DH+WNQ81Mj0MzM5BDH2WQQx9lkEMzc5BDM7OQQwAAkUMfJZFDMzORQwBAkUOZGZFDHyWRQ83MkUOZWZJDAICSQwDAkkMz85JDAMCSQwCAkkMzc5JDAICSQzPzj0MAAJBDHyWQQzOzkEMfZZFDmdmRQx8lkkPNTJJDAACSQzOzkUPNjJFDHyWRQzNzkEMfpY9DzUyPQ5kZj0Mz841DAACMQ82MikPNDIlDMzOHQx/lhkMAgIhDHyWKQwBAi0Mf5YtDmVmLQwCAikMAwIpDM3OLQwCAi0MAgItDHyWMQ81MjUOZmY5DAMCPQwCAkEMz85BDM/OQQwCAkEPNDJBDH+WPQzOzj0MAgI9DMzOQQ5lZkUMf5ZFDMzOSQwCAkkMfZZJDAECSQzMzkkMf5ZFDAECPQwBAj0OZ2Y5DHyWPQzPzj0MAgJBDM/OQQwBAkUMAAJFDM7OQQwDAkEMAgJBDAACQQwDAj0MAQI9DAECNQ83MiUMzc4ZDH+WEQ80MhUMzc4VDM3OFQ81MhUMfZYVDHyWGQx9lh0OZWYhDM7OIQ80MiUMAwIlDAACKQzOziUOZ2YlDH+WKQ82MjEMzM45DHyWPQzNzj0MAwI9DM7OPQwAAj0OZmY5DmdmOQwAAj0MAgI9DH6WQQx9lkUOZmZFDmdmRQzPzkUMf5ZFDM7ORQwBAkUPNTI5DM3OOQ5kZjkOZ2Y1DmRmOQwDAjkMfpY9DHyWQQzPzj0MfpY9DzYyPQzMzj0OZGY9DmRmPQwCAjUPNzIlDzQyGQwAAhEMAQINDM/OCQ80Mg0PNjINDM/ODQzMzhEOZmYRDAICFQ82MhkMzM4dDH+WHQzOziEMz84hDmdmIQ5kZiUMzc4lDAACKQwBAi0PNTIxDH6WMQwBAjUMf5Y1DzYyNQwAAjUOZWY1DAMCNQzMzjkMfZY9DAICQQwAAkUMfZZFDM7ORQzNzkUPNDJFDzcyQQx9ljUOZmY1DzUyNQzPzjEOZGY1DH+WNQwDAjkMz845DAMCOQ5mZjkOZWY5DmdmNQzPzjUPNDI5DH+WLQ83Mh0MAAIVDM3OEQ82Mg0Mzs4FDHyWBQ80Mg0MAQIVDH+WFQwBAhUOZWYRDAICDQ81Mg0PNjIRDM3OGQzOzh0Mzc4hDH+WIQwCAiEOZ2YdDH2WIQzNziUPNjIlDzYyJQ5kZikPNjIpDmdmKQ81Mi0PNjItDzQyMQ5mZjUMAQI9DHyWQQx+lkEMAAJFDmdmQQ82MkEMzc5BDAACMQ5lZjEOZGYxDzcyLQx8ljEMAAI1DH6WNQ83MjUOZ2Y1DmdmNQ5lZjUPNzIxDmRmNQx9ljUMfpYtDzUyIQ83MhUMfpYRDHyWDQ5mZgUPNDIJDMzOEQzNzhUOZ2YRDM7ODQwCAgkMz84BDAECAQ83MgUMAgIRDmRmGQwDAhkOZmYdDH+WHQzPzhkMAgIVDM3OEQx8lhEMz84RD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H6WBQx/lgEPMTH9DMzN8QwAAeUPMTHZD12N0Q8xMc0Mzs3JDmRlyQ5mZcUMAAHFDzMxwQ5kZcUMAAHJD12NzQ5kZdUPX43ZDAAB5QzMze0OZGX1D1+N9Q9djfEPXY3hDzMxyQwCAbkPMTG5DM7NzQ9fjfEOZmYJDmRmEQwAAgkOZmXpDzMxwQzMza0MzM2tDzExvQ5mZdEMzM3lDmRl9QzNzgEMAAHpDzMx5Q9fjeEMAgHdDAAB2Q9djdEOZGXND12NyQzMzckMAgHJDmRlzQwCAc0MAgHNDAABzQwAAckMAAHFDmRlwQzOzb0PMzG9DmRlwQ9djcEOZmXBDM7NwQwAAcUMzs3FDAABzQ5mZdEPMTHZD1+N3Q5kZeUPX43lD12N6QzMzekOZGXlDzMx2QzOzc0OZmXBDmRlvQzMzcEOZGXRDAIB5Q5kZfkMAAIBDzEx+Q5mZeUMzs3NDzExuQwCAakPXY2hD1+NnQzMzaUPXY2xDM7NxQ8zMc0MAgHRDM7N0QzMzdEPXY3ND12NyQzOzcUPMTHFDmRlxQ5kZcUMAAHFDAIBwQzOzb0Mzs25DM7NtQ5kZbUMzM21DAABuQ8xMb0Mzs3BDAAByQ9fjckMAgHND1+NzQ8xMdEMAAHVDzMx1Q5mZdkOZGXdDMzN3Q8zMdkMAAHZDmRl1Q8xMdEPX43NDAAB0Q5mZdEOZmXVDzMx2Q9fjd0PMTHhDmZl3Q9fjdUPXY3ND12NwQwCAbUMAAGtDMzNpQwAAaEPMzGdDzMxoQ8xMa0PMTG9DMzNxQwCAckMAgHNDAAB0Q5kZdEPX43NDmZlzQ5kZc0MAgHJD1+NxQzMzcUPMTHBDAIBvQ8zMbkMAgG5DM7NuQ5mZb0MAAHFD1+NyQ8zMdEMAgHZDzMx3Q5mZeEMAAHlDmRl5Q5kZeUMAAHlD1+N4QzOzeEOZmXhD12N4Q8xMeEPMTHhDmZl4QwAAeUMAgHlDmZl5Q5kZeUPMzHdD12N1QzMzckMAgG5DM7NqQ8xMZ0PMzGRDzExjQwAAY0MAgGNDzMxkQ5mZZkPMzGhDAIBrQ5mZbkM=\"},\"shape\":[25,53],\"dtype\":\"float32\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1182\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1183\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1175\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"type\":\"object\",\"name\":\"LinearColorMapper\",\"id\":\"p1168\",\"attributes\":{\"palette\":[\"#b3fef5\",\"#b0fef5\",\"#adfdf5\",\"#a9fcf5\",\"#a6fbf6\",\"#a3faf6\",\"#a0faf6\",\"#9df9f6\",\"#9af8f6\",\"#97f7f6\",\"#93f7f6\",\"#90f6f6\",\"#8df5f6\",\"#8af4f7\",\"#87f3f7\",\"#83f2f7\",\"#80f2f7\",\"#7df1f7\",\"#79f0f7\",\"#76eff7\",\"#73eef7\",\"#6fedf8\",\"#6cecf8\",\"#68ecf8\",\"#65ebf8\",\"#61eaf8\",\"#5ee9f8\",\"#5ae8f8\",\"#57e7f8\",\"#53e6f8\",\"#50e5f9\",\"#4ce4f9\",\"#49e3f9\",\"#45e2f9\",\"#42e1f9\",\"#3ee0f9\",\"#3bdff9\",\"#38def9\",\"#35ddf9\",\"#32dcf9\",\"#30dbfa\",\"#2ed9fa\",\"#2dd8fa\",\"#2cd7fa\",\"#2bd6fa\",\"#2bd5fa\",\"#2ad3fa\",\"#2ad2fa\",\"#29d1fa\",\"#29d0fb\",\"#29cffb\",\"#28cdfb\",\"#28ccfb\",\"#28cbfb\",\"#28cafb\",\"#28c8fb\",\"#28c7fb\",\"#29c6fb\",\"#29c5fb\",\"#29c4fb\",\"#29c2fb\",\"#2ac1fb\",\"#2ac0fb\",\"#2bbffb\",\"#2bbdfc\",\"#2cbcfc\",\"#2dbbfc\",\"#2db9fc\",\"#2eb8fc\",\"#2fb7fc\",\"#2fb6fc\",\"#30b4fc\",\"#31b3fc\",\"#32b2fc\",\"#32b0fc\",\"#33affc\",\"#33aefc\",\"#34adfc\",\"#34abfc\",\"#34aafc\",\"#35a9fc\",\"#35a8fc\",\"#35a6fc\",\"#35a5fc\",\"#35a4fc\",\"#35a3fc\",\"#35a1fc\",\"#35a0fc\",\"#359ffc\",\"#359dfc\",\"#359cfc\",\"#359bfc\",\"#349afd\",\"#3498fd\",\"#3497fd\",\"#3396fd\",\"#3395fd\",\"#3293fd\",\"#3292fd\",\"#3191fd\",\"#3090fd\",\"#308ffd\",\"#2f8dfd\",\"#2f8cfd\",\"#2e8bfd\",\"#2e8afd\",\"#2d88fd\",\"#2d87fd\",\"#2c86fd\",\"#2c84fd\",\"#2c83fd\",\"#2c82fd\",\"#2b81fd\",\"#2b7ffd\",\"#2b7efd\",\"#2b7dfd\",\"#2b7bfd\",\"#2b7afd\",\"#2b79fd\",\"#2b77fd\",\"#2b76fd\",\"#2b75fd\",\"#2b73fd\",\"#2c72fd\",\"#2c71fd\",\"#2c6ffd\",\"#2c6efd\",\"#2d6cfd\",\"#2d6bfd\",\"#2d6afc\",\"#2e68fc\",\"#2e67fc\",\"#2e65fc\",\"#2e64fc\",\"#2f62fc\",\"#2f61fc\",\"#2f5ffc\",\"#2f5efc\",\"#2f5dfc\",\"#2f5bfc\",\"#2f5afc\",\"#2f58fb\",\"#2f57fb\",\"#2f55fb\",\"#2f53fb\",\"#2f52fb\",\"#2f50fb\",\"#2f4ffb\",\"#2f4dfb\",\"#2e4cfb\",\"#2e4afb\",\"#2e48fb\",\"#2e47fa\",\"#2d45fa\",\"#2d43fa\",\"#2d42fa\",\"#2d40fa\",\"#2c3efa\",\"#2c3dfa\",\"#2b3bf9\",\"#2b39f9\",\"#2a37f9\",\"#2a36f8\",\"#2934f8\",\"#2832f7\",\"#2831f7\",\"#272ff6\",\"#262ef5\",\"#252cf5\",\"#252af4\",\"#2429f3\",\"#2327f2\",\"#2226f1\",\"#2124f0\",\"#2023ef\",\"#1f22ee\",\"#1e20ed\",\"#1d1feb\",\"#1c1eea\",\"#1b1ce9\",\"#1a1be7\",\"#181ae6\",\"#1719e5\",\"#1618e3\",\"#1417e1\",\"#1316e0\",\"#1215de\",\"#1014dc\",\"#0f13db\",\"#0e12d9\",\"#0d11d7\",\"#0c10d5\",\"#0b0fd3\",\"#0a0ed1\",\"#090dd0\",\"#080dce\",\"#080ccc\",\"#070bca\",\"#070ac8\",\"#0709c6\",\"#0708c4\",\"#0707c2\",\"#0707bf\",\"#0806bd\",\"#0806bb\",\"#0905b9\",\"#0904b7\",\"#0a04b5\",\"#0a04b2\",\"#0b03b0\",\"#0c03ae\",\"#0d02ab\",\"#0e02a9\",\"#0e02a7\",\"#0f02a4\",\"#0f01a2\",\"#1001a0\",\"#10019d\",\"#10019b\",\"#100199\",\"#100197\",\"#100194\",\"#0f0192\",\"#0f0190\",\"#0f018e\",\"#0e018b\",\"#0e0189\",\"#0d0187\",\"#0d0185\",\"#0c0183\",\"#0b0181\",\"#0b017e\",\"#0a017c\",\"#09017a\",\"#090178\",\"#080276\",\"#070274\",\"#060272\",\"#060270\",\"#05026e\",\"#04026c\",\"#030269\",\"#030267\",\"#020265\",\"#010263\",\"#010261\",\"#00025f\",\"#00025d\",\"#00025b\",\"#000259\",\"#000257\",\"#000255\",\"#000154\",\"#000152\",\"#000150\",\"#00004e\"],\"nan_color\":\"rgba(0, 0, 0, 0)\",\"low\":227.0,\"high\":302.6000061035156}}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1187\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":1.0},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1168\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1177\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":0.1},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1168\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1179\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":0.2},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1168\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1150\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1139\",\"attributes\":{\"tags\":[\"hv_created\"],\"zoom_together\":\"none\"}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1140\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p1181\"}],\"tooltips\":[[\"Longitude (degrees_east)\",\"$x\"],[\"Latitude (degrees_north)\",\"$y\"],[\"4xDaily Air temperature at sigma level 995 (degK)\",\"@image\"]]}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1163\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1164\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1165\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1166\",\"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\":\"p1167\"}],\"active_drag\":{\"id\":\"p1164\"},\"active_scroll\":{\"id\":\"p1139\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1158\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1159\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1160\"},\"axis_label\":\"Latitude (degrees_north)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1161\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"ColorBar\",\"id\":\"p1185\",\"attributes\":{\"location\":[0,0],\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1184\",\"attributes\":{\"mantissas\":[1,2,5]}},\"major_label_policy\":{\"type\":\"object\",\"name\":\"NoOverlap\",\"id\":\"p1186\"},\"label_standoff\":8,\"major_tick_line_color\":\"black\",\"bar_line_color\":\"black\",\"color_mapper\":{\"id\":\"p1168\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1153\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1154\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1155\"},\"axis_label\":\"Longitude (degrees_east)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1156\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1157\",\"attributes\":{\"axis\":{\"id\":\"p1153\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1162\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1158\"},\"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\":\"panel.models.layout.Column\",\"id\":\"p1189\",\"attributes\":{\"name\":\"WidgetBox00990\",\"css_classes\":[\"panel-widget-box\"],\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1192\"},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1195\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/widgetbox.css\"}},{\"id\":\"p1196\"},{\"id\":\"p1190\"},{\"id\":\"p1191\"}],\"margin\":0,\"align\":[\"end\",\"start\"],\"children\":[{\"type\":\"object\",\"name\":\"panel.models.datetime_picker.DatetimePicker\",\"id\":\"p1193\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1192\"},{\"id\":\"p1190\"},{\"id\":\"p1191\"}],\"width\":250,\"min_width\":250,\"margin\":[20,20,20,20],\"align\":\"start\",\"title\":\"Time\",\"value\":\"2013-01-01 00:00:00\",\"min_date\":\"2013-01-01T00:00:00\",\"max_date\":\"2013-01-02T00:00:00\",\"disabled_dates\":null,\"enabled_dates\":null}}]}}]}},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"p1199\",\"attributes\":{\"plot_id\":\"p1133\",\"comm_id\":\"8ddad31bcc584c978d51d415a5d6daa1\",\"client_comm_id\":\"559b009ac1bd4be1896f061521bc55ad\"}}],\"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\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"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}]}]}};\n",
" var render_items = [{\"docid\":\"1e648645-e46d-4bbd-843f-ce64e1da858d\",\"roots\":{\"p1133\":\"e489b8c6-a05c-4b08-8aab-10677c0aceea\"},\"root_ids\":[\"p1133\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\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": [
"Row\n",
" [0] HoloViews(DynamicMap, height=300, sizing_mode='fixed', widgets={'time': DatetimePicker(en...}, width=700)\n",
" [1] WidgetBox(align=('end', 'start'))\n",
" [0] DatetimePicker(end=Timestamp('2013-01-02 0..., margin=(20, 20, 20, 20), name='Time', start=Timestamp('2013-01-01 0..., value=Timestamp('2013-01-01 0..., width=250)"
]
},
"execution_count": 6,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "p1133"
}
},
"output_type": "execute_result"
}
],
"source": [
"\n",
"dt = pd.to_datetime(xr_ds.time)\n",
"\n",
"pn.panel(viz, widgets={'time': pn.widgets.DatetimePicker(value=dt.min(), start=dt.min(), end=dt.max())}) # Use Selection widget\n"
]
},
{
"cell_type": "markdown",
"id": "834c3f30-40e2-47fd-bd56-314082d4381a",
"metadata": {},
"source": [
"## Seems like the only way to get this to work is making the plot function input the selected time from the DatetimePicker"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "34c440a1-8b85-4d52-b546-fee46d50d0de",
"metadata": {},
"outputs": [],
"source": [
"datetime_widget = pn.widgets.DatetimePicker(\n",
" value=dt.min(), start=dt.min(), end=dt.max()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "342aecf0-55d9-42a1-b5ef-f305076877f5",
"metadata": {},
"outputs": [
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"<div id='p1201'>\n",
" <div id=\"c9c54318-a1e7-483c-baab-77fb3fecbd71\" data-root-id=\"p1201\" style=\"display: contents;\"></div>\n",
"</div>\n",
"<script type=\"application/javascript\">(function(root) {\n",
" var docs_json = {\"6d39ad58-c122-479f-8a40-36bb12b2eb79\":{\"version\":\"3.2.2\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"Row\",\"id\":\"p1201\",\"attributes\":{\"name\":\"Row01111\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-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\":\"p1262\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/loading.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1263\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/css/listpanel.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1260\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/bundled/theme/default.css\"}},{\"type\":\"object\",\"name\":\"ImportedStyleSheet\",\"id\":\"p1261\",\"attributes\":{\"url\":\"https://cdn.holoviz.org/panel/1.2.3/dist/bundled/theme/native.css\"}}],\"margin\":0,\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"panel.models.layout.Column\",\"id\":\"p1202\",\"attributes\":{\"name\":\"Column01051\",\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1262\"},{\"id\":\"p1263\"},{\"id\":\"p1260\"},{\"id\":\"p1261\"}],\"margin\":0,\"sizing_mode\":\"fixed\",\"align\":\"start\",\"children\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1210\",\"attributes\":{\"name\":\"ParamFunction01039\",\"width\":700,\"height\":300,\"margin\":[5,10],\"sizing_mode\":\"fixed\",\"align\":\"start\",\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1203\",\"attributes\":{\"tags\":[[[\"lon\",\"Longitude\",\"degrees_east\"]],[]],\"start\":198.75,\"end\":331.25,\"reset_start\":198.75,\"reset_end\":331.25}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1204\",\"attributes\":{\"tags\":[[[\"lat\",\"Latitude\",\"degrees_north\"]],{\"type\":\"map\",\"entries\":[[\"invert_yaxis\",false],[\"autorange\",false]]}],\"start\":13.75,\"end\":76.25,\"reset_start\":13.75,\"reset_end\":76.25}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1220\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1221\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1213\",\"attributes\":{\"text\":\"time = 2013-01-01\",\"text_color\":\"black\",\"text_font_size\":\"12pt\"}},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1250\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1238\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1239\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1240\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",[198.75]],[\"y\",[13.75]],[\"dw\",[132.5]],[\"dh\",[62.5]],[\"image\",[{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"HyWUQx9llEPNjJRDAICUQzNzlEMzM5RDAACUQ5nZk0MAwJNDM7OTQ5mZk0OZmZNDAICTQwDAk0OZ2ZNDM7OTQzMzlEMfZZRDH2WUQx+llEMfJZVDzQyWQwCAlkPNTJdDmRmXQzMzlkMAwJZDzYyVQ80MlEMAAJRDM/OTQwDAlUOZmZZDM7OVQ5nZlUMAwJVDM7OVQwDAlUMzc5VDmZmVQwCAlUOZmZVDH+WVQ5nZlUPNjJVDmVmVQ81MlUMAAJVDH+WUQ83MlEMzc5RDH2WUQ81MlEMz85NDmRmUQx9llEMAQJRDzQyUQ82Mk0PNTJNDMzOTQx/lkkMf5ZJDH+WSQx+lkkMfZZJDM7OSQ80Mk0MzM5NDAECTQzPzkkPNTJNDzcyTQwCAlEOZ2ZVDHyWWQzOzlUPNDJRDzQyTQx8llUMAAJVDH2WTQwBAlEMAQJVDM/OVQzPzlUMzs5VDM/OVQwBAlUMAAJVDH2WVQ5lZlUMAgJVDM3OVQ81MlUMzM5VDMzOVQzNzlUPNTJVDM/OUQzOzlEMzc5RDHyWUQzPzk0Mz85NDmZmTQ81MlEOZGZRDMzOUQwBAlEMAwJNDAACTQ83MkkMzs5JDH2WSQzNzkkPNTJJDmRmSQ5kZkkPNDJJDAACSQ80MkkMf5ZFDAACSQwDAkkMf5ZJDAMCTQx9llUMzM5RDzQySQx9lkUMAQJJDzcyUQ5mZlUMzs5RDzcyUQzPzlEOZGZVDzQyVQx/llEPNDJVDzYyUQ82MlEMAAJVDM/OUQwAAlUPNDJVDzQyVQ80MlUMzM5VDH2WVQwAAlUMfpZRDmZmUQ5lZlEMf5ZNDM7OTQ82Mk0OZWZNDAICUQ5lZlEPNDJRDM/OTQzNzk0Mzs5JDH2WSQzMzkkOZGZJDmRmSQwDAkUPNjJFDM3ORQ5lZkUMfZZFDM3ORQ5lZkUMAgJFDH6WRQzOzkUMAAJNDM7OTQwAAkUMzs49DAACSQ83Mk0MfZZRDmVmUQ5kZlEPNTJRDM3OUQ5mZlEMzM5RDAMCTQx/lk0Mz85NDAACUQzMzlEPNTJRDH2WUQ5lZlEPNjJRDAMCUQx/llEMz85RDM7OUQwCAlEMzc5RDHyWUQ83Mk0PNjJNDzYyTQzNzk0Mzs5NDmdmTQx/lk0Mz85NDM7OTQwAAk0Mzc5JDAECSQ5kZkkMAwJFDAICRQzNzkUMzM5FDzQyRQ5kZkUMAAJFDM/OQQ5nZkEPNzJBDMzORQzNzkUOZ2Y9DMzOOQwBAkEPNjJNDMzOUQzOzk0MfpZNDH6WTQwDAk0MfpZNDM3OTQwBAk0MAQJNDmVmTQx8lk0Mf5ZJDAACTQzMzk0OZWZNDAICTQ83Mk0MfJZRDzYyUQ5nZlEOZmZRDMzOUQ80MlEMf5ZNDH6WTQ5lZk0OZWZNDHyWTQx/lkkPNDJNDzUyTQwCAk0Mzs5NDmVmTQ5mZkkMzM5JDzQySQx+lkUMfZZFDMzORQx/lkEMAwJBDH2WQQzMzkEPNjJBDmZmQQx/lkEMfJZFDH2WPQx/ljEMAwI1DMzORQ5nZkkMzc5JDAICSQx/lkkOZ2ZJDAICSQ5nZkUMfpZFDHyWSQzNzkkMzM5JDmdmRQzPzkUMfJZJDmRmSQ5kZkkMfZZJDzcySQ81Mk0OZ2ZNDAECUQx8llEPNDJRDAACUQzOzk0MfZZNDHyWTQzPzkkMAwJJDzYySQx+lkkMfpZJDAMCSQwBAk0Mzc5NDAMCSQzPzkUMAwJFDAMCRQzNzkUOZ2ZBDM3OQQzMzkEMzs49DH6WPQx/lj0PNjI9DzYyPQ5kZj0MAwIxDzUyLQx8ljUMfZY9DAACQQwCAkEPNzJBDmVmQQwBAkEOZWZBDmdmPQx8lkEMAQJFDzYyRQx8lkUMz85BDHyWRQ5lZkUMzc5FDmZmRQwDAkUMf5ZFDmRmSQ82MkkMAAJNDAECTQzNzk0PNjJNDzUyTQwAAk0OZ2ZJDAMCSQ83MkkOZGZFDH2WRQzOzkUPNDJJDzYySQx/lkkPNzJJDH2WSQ80MkkMz85FDH6WRQwAAkUMfZZBDM7OPQ5kZj0MzM49DAECPQx+ljkOZGY5DAICMQ5mZiUPNzIhDAACLQ80MjUPNTI5DH2WPQx/ljkPNjI1DAICNQ5nZjUPNjI1DH+WNQ81Mj0MzM5BDH2WQQx9lkEMzc5BDM7OQQwAAkUMfJZFDMzORQwBAkUOZGZFDHyWRQ83MkUOZWZJDAICSQwDAkkMz85JDAMCSQwCAkkMzc5JDAICSQzPzj0MAAJBDHyWQQzOzkEMfZZFDmdmRQx8lkkPNTJJDAACSQzOzkUPNjJFDHyWRQzNzkEMfpY9DzUyPQ5kZj0Mz841DAACMQ82MikPNDIlDMzOHQx/lhkMAgIhDHyWKQwBAi0Mf5YtDmVmLQwCAikMAwIpDM3OLQwCAi0MAgItDHyWMQ81MjUOZmY5DAMCPQwCAkEMz85BDM/OQQwCAkEPNDJBDH+WPQzOzj0MAgI9DMzOQQ5lZkUMf5ZFDMzOSQwCAkkMfZZJDAECSQzMzkkMf5ZFDAECPQwBAj0OZ2Y5DHyWPQzPzj0MAgJBDM/OQQwBAkUMAAJFDM7OQQwDAkEMAgJBDAACQQwDAj0MAQI9DAECNQ83MiUMzc4ZDH+WEQ80MhUMzc4VDM3OFQ81MhUMfZYVDHyWGQx9lh0OZWYhDM7OIQ80MiUMAwIlDAACKQzOziUOZ2YlDH+WKQ82MjEMzM45DHyWPQzNzj0MAwI9DM7OPQwAAj0OZmY5DmdmOQwAAj0MAgI9DH6WQQx9lkUOZmZFDmdmRQzPzkUMf5ZFDM7ORQwBAkUPNTI5DM3OOQ5kZjkOZ2Y1DmRmOQwDAjkMfpY9DHyWQQzPzj0MfpY9DzYyPQzMzj0OZGY9DmRmPQwCAjUPNzIlDzQyGQwAAhEMAQINDM/OCQ80Mg0PNjINDM/ODQzMzhEOZmYRDAICFQ82MhkMzM4dDH+WHQzOziEMz84hDmdmIQ5kZiUMzc4lDAACKQwBAi0PNTIxDH6WMQwBAjUMf5Y1DzYyNQwAAjUOZWY1DAMCNQzMzjkMfZY9DAICQQwAAkUMfZZFDM7ORQzNzkUPNDJFDzcyQQx9ljUOZmY1DzUyNQzPzjEOZGY1DH+WNQwDAjkMz845DAMCOQ5mZjkOZWY5DmdmNQzPzjUPNDI5DH+WLQ83Mh0MAAIVDM3OEQ82Mg0Mzs4FDHyWBQ80Mg0MAQIVDH+WFQwBAhUOZWYRDAICDQ81Mg0PNjIRDM3OGQzOzh0Mzc4hDH+WIQwCAiEOZ2YdDH2WIQzNziUPNjIlDzYyJQ5kZikPNjIpDmdmKQ81Mi0PNjItDzQyMQ5mZjUMAQI9DHyWQQx+lkEMAAJFDmdmQQ82MkEMzc5BDAACMQ5lZjEOZGYxDzcyLQx8ljEMAAI1DH6WNQ83MjUOZ2Y1DmdmNQ5lZjUPNzIxDmRmNQx9ljUMfpYtDzUyIQ83MhUMfpYRDHyWDQ5mZgUPNDIJDMzOEQzNzhUOZ2YRDM7ODQwCAgkMz84BDAECAQ83MgUMAgIRDmRmGQwDAhkOZmYdDH+WHQzPzhkMAgIVDM3OEQx8lhEMz84RD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H6WBQx/lgEPMTH9DMzN8QwAAeUPMTHZD12N0Q8xMc0Mzs3JDmRlyQ5mZcUMAAHFDzMxwQ5kZcUMAAHJD12NzQ5kZdUPX43ZDAAB5QzMze0OZGX1D1+N9Q9djfEPXY3hDzMxyQwCAbkPMTG5DM7NzQ9fjfEOZmYJDmRmEQwAAgkOZmXpDzMxwQzMza0MzM2tDzExvQ5mZdEMzM3lDmRl9QzNzgEMAAHpDzMx5Q9fjeEMAgHdDAAB2Q9djdEOZGXND12NyQzMzckMAgHJDmRlzQwCAc0MAgHNDAABzQwAAckMAAHFDmRlwQzOzb0PMzG9DmRlwQ9djcEOZmXBDM7NwQwAAcUMzs3FDAABzQ5mZdEPMTHZD1+N3Q5kZeUPX43lD12N6QzMzekOZGXlDzMx2QzOzc0OZmXBDmRlvQzMzcEOZGXRDAIB5Q5kZfkMAAIBDzEx+Q5mZeUMzs3NDzExuQwCAakPXY2hD1+NnQzMzaUPXY2xDM7NxQ8zMc0MAgHRDM7N0QzMzdEPXY3ND12NyQzOzcUPMTHFDmRlxQ5kZcUMAAHFDAIBwQzOzb0Mzs25DM7NtQ5kZbUMzM21DAABuQ8xMb0Mzs3BDAAByQ9fjckMAgHND1+NzQ8xMdEMAAHVDzMx1Q5mZdkOZGXdDMzN3Q8zMdkMAAHZDmRl1Q8xMdEPX43NDAAB0Q5mZdEOZmXVDzMx2Q9fjd0PMTHhDmZl3Q9fjdUPXY3ND12NwQwCAbUMAAGtDMzNpQwAAaEPMzGdDzMxoQ8xMa0PMTG9DMzNxQwCAckMAgHNDAAB0Q5kZdEPX43NDmZlzQ5kZc0MAgHJD1+NxQzMzcUPMTHBDAIBvQ8zMbkMAgG5DM7NuQ5mZb0MAAHFD1+NyQ8zMdEMAgHZDzMx3Q5mZeEMAAHlDmRl5Q5kZeUMAAHlD1+N4QzOzeEOZmXhD12N4Q8xMeEPMTHhDmZl4QwAAeUMAgHlDmZl5Q5kZeUPMzHdD12N1QzMzckMAgG5DM7NqQ8xMZ0PMzGRDzExjQwAAY0MAgGNDzMxkQ5mZZkPMzGhDAIBrQ5mZbkM=\"},\"shape\":[25,53],\"dtype\":\"float32\",\"order\":\"little\"}]]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1251\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1252\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1244\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"type\":\"object\",\"name\":\"LinearColorMapper\",\"id\":\"p1237\",\"attributes\":{\"palette\":[\"#b3fef5\",\"#b0fef5\",\"#adfdf5\",\"#a9fcf5\",\"#a6fbf6\",\"#a3faf6\",\"#a0faf6\",\"#9df9f6\",\"#9af8f6\",\"#97f7f6\",\"#93f7f6\",\"#90f6f6\",\"#8df5f6\",\"#8af4f7\",\"#87f3f7\",\"#83f2f7\",\"#80f2f7\",\"#7df1f7\",\"#79f0f7\",\"#76eff7\",\"#73eef7\",\"#6fedf8\",\"#6cecf8\",\"#68ecf8\",\"#65ebf8\",\"#61eaf8\",\"#5ee9f8\",\"#5ae8f8\",\"#57e7f8\",\"#53e6f8\",\"#50e5f9\",\"#4ce4f9\",\"#49e3f9\",\"#45e2f9\",\"#42e1f9\",\"#3ee0f9\",\"#3bdff9\",\"#38def9\",\"#35ddf9\",\"#32dcf9\",\"#30dbfa\",\"#2ed9fa\",\"#2dd8fa\",\"#2cd7fa\",\"#2bd6fa\",\"#2bd5fa\",\"#2ad3fa\",\"#2ad2fa\",\"#29d1fa\",\"#29d0fb\",\"#29cffb\",\"#28cdfb\",\"#28ccfb\",\"#28cbfb\",\"#28cafb\",\"#28c8fb\",\"#28c7fb\",\"#29c6fb\",\"#29c5fb\",\"#29c4fb\",\"#29c2fb\",\"#2ac1fb\",\"#2ac0fb\",\"#2bbffb\",\"#2bbdfc\",\"#2cbcfc\",\"#2dbbfc\",\"#2db9fc\",\"#2eb8fc\",\"#2fb7fc\",\"#2fb6fc\",\"#30b4fc\",\"#31b3fc\",\"#32b2fc\",\"#32b0fc\",\"#33affc\",\"#33aefc\",\"#34adfc\",\"#34abfc\",\"#34aafc\",\"#35a9fc\",\"#35a8fc\",\"#35a6fc\",\"#35a5fc\",\"#35a4fc\",\"#35a3fc\",\"#35a1fc\",\"#35a0fc\",\"#359ffc\",\"#359dfc\",\"#359cfc\",\"#359bfc\",\"#349afd\",\"#3498fd\",\"#3497fd\",\"#3396fd\",\"#3395fd\",\"#3293fd\",\"#3292fd\",\"#3191fd\",\"#3090fd\",\"#308ffd\",\"#2f8dfd\",\"#2f8cfd\",\"#2e8bfd\",\"#2e8afd\",\"#2d88fd\",\"#2d87fd\",\"#2c86fd\",\"#2c84fd\",\"#2c83fd\",\"#2c82fd\",\"#2b81fd\",\"#2b7ffd\",\"#2b7efd\",\"#2b7dfd\",\"#2b7bfd\",\"#2b7afd\",\"#2b79fd\",\"#2b77fd\",\"#2b76fd\",\"#2b75fd\",\"#2b73fd\",\"#2c72fd\",\"#2c71fd\",\"#2c6ffd\",\"#2c6efd\",\"#2d6cfd\",\"#2d6bfd\",\"#2d6afc\",\"#2e68fc\",\"#2e67fc\",\"#2e65fc\",\"#2e64fc\",\"#2f62fc\",\"#2f61fc\",\"#2f5ffc\",\"#2f5efc\",\"#2f5dfc\",\"#2f5bfc\",\"#2f5afc\",\"#2f58fb\",\"#2f57fb\",\"#2f55fb\",\"#2f53fb\",\"#2f52fb\",\"#2f50fb\",\"#2f4ffb\",\"#2f4dfb\",\"#2e4cfb\",\"#2e4afb\",\"#2e48fb\",\"#2e47fa\",\"#2d45fa\",\"#2d43fa\",\"#2d42fa\",\"#2d40fa\",\"#2c3efa\",\"#2c3dfa\",\"#2b3bf9\",\"#2b39f9\",\"#2a37f9\",\"#2a36f8\",\"#2934f8\",\"#2832f7\",\"#2831f7\",\"#272ff6\",\"#262ef5\",\"#252cf5\",\"#252af4\",\"#2429f3\",\"#2327f2\",\"#2226f1\",\"#2124f0\",\"#2023ef\",\"#1f22ee\",\"#1e20ed\",\"#1d1feb\",\"#1c1eea\",\"#1b1ce9\",\"#1a1be7\",\"#181ae6\",\"#1719e5\",\"#1618e3\",\"#1417e1\",\"#1316e0\",\"#1215de\",\"#1014dc\",\"#0f13db\",\"#0e12d9\",\"#0d11d7\",\"#0c10d5\",\"#0b0fd3\",\"#0a0ed1\",\"#090dd0\",\"#080dce\",\"#080ccc\",\"#070bca\",\"#070ac8\",\"#0709c6\",\"#0708c4\",\"#0707c2\",\"#0707bf\",\"#0806bd\",\"#0806bb\",\"#0905b9\",\"#0904b7\",\"#0a04b5\",\"#0a04b2\",\"#0b03b0\",\"#0c03ae\",\"#0d02ab\",\"#0e02a9\",\"#0e02a7\",\"#0f02a4\",\"#0f01a2\",\"#1001a0\",\"#10019d\",\"#10019b\",\"#100199\",\"#100197\",\"#100194\",\"#0f0192\",\"#0f0190\",\"#0f018e\",\"#0e018b\",\"#0e0189\",\"#0d0187\",\"#0d0185\",\"#0c0183\",\"#0b0181\",\"#0b017e\",\"#0a017c\",\"#09017a\",\"#090178\",\"#080276\",\"#070274\",\"#060272\",\"#060270\",\"#05026e\",\"#04026c\",\"#030269\",\"#030267\",\"#020265\",\"#010263\",\"#010261\",\"#00025f\",\"#00025d\",\"#00025b\",\"#000259\",\"#000257\",\"#000255\",\"#000154\",\"#000152\",\"#000150\",\"#00004e\"],\"nan_color\":\"rgba(0, 0, 0, 0)\",\"low\":227.0,\"high\":302.6000061035156}}}},\"selection_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1256\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":1.0},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1237\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1246\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":0.1},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1237\"}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Image\",\"id\":\"p1248\",\"attributes\":{\"tags\":[\"apply_ranges\"],\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"dw\":{\"type\":\"field\",\"field\":\"dw\"},\"dh\":{\"type\":\"field\",\"field\":\"dh\"},\"global_alpha\":{\"type\":\"value\",\"value\":0.2},\"image\":{\"type\":\"field\",\"field\":\"image\"},\"color_mapper\":{\"id\":\"p1237\"}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1219\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1208\",\"attributes\":{\"tags\":[\"hv_created\"],\"zoom_together\":\"none\"}},{\"type\":\"object\",\"name\":\"HoverTool\",\"id\":\"p1209\",\"attributes\":{\"tags\":[\"hv_created\"],\"renderers\":[{\"id\":\"p1250\"}],\"tooltips\":[[\"Longitude (degrees_east)\",\"$x\"],[\"Latitude (degrees_north)\",\"$y\"],[\"4xDaily Air temperature at sigma level 995 (degK)\",\"@image\"]]}},{\"type\":\"object\",\"name\":\"SaveTool\",\"id\":\"p1232\"},{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1233\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1234\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1235\",\"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\":\"p1236\"}],\"active_drag\":{\"id\":\"p1233\"},\"active_scroll\":{\"id\":\"p1208\"}}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1227\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1228\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1229\"},\"axis_label\":\"Latitude (degrees_north)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1230\"}}}],\"right\":[{\"type\":\"object\",\"name\":\"ColorBar\",\"id\":\"p1254\",\"attributes\":{\"location\":[0,0],\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1253\",\"attributes\":{\"mantissas\":[1,2,5]}},\"major_label_policy\":{\"type\":\"object\",\"name\":\"NoOverlap\",\"id\":\"p1255\"},\"label_standoff\":8,\"major_tick_line_color\":\"black\",\"bar_line_color\":\"black\",\"color_mapper\":{\"id\":\"p1237\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1222\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1223\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1224\"},\"axis_label\":\"Longitude (degrees_east)\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1225\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1226\",\"attributes\":{\"axis\":{\"id\":\"p1222\"},\"grid_line_color\":null}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1231\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1227\"},\"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\":\"panel.models.datetime_picker.DatetimePicker\",\"id\":\"p1265\",\"attributes\":{\"stylesheets\":[\"\\n:host(.pn-loading.pn-arc):before, .pn-loading.pn-arc:before {\\n background-image: url(\\\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHN0eWxlPSJtYXJnaW46IGF1dG87IGJhY2tncm91bmQ6IG5vbmU7IGRpc3BsYXk6IGJsb2NrOyBzaGFwZS1yZW5kZXJpbmc6IGF1dG87IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYzNjM2MzIiBzdHJva2Utd2lkdGg9IjEwIiByPSIzNSIgc3Ryb2tlLWRhc2hhcnJheT0iMTY0LjkzMzYxNDMxMzQ2NDE1IDU2Ljk3Nzg3MTQzNzgyMTM4Ij4gICAgPGFuaW1hdGVUcmFuc2Zvcm0gYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIiB0eXBlPSJyb3RhdGUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB2YWx1ZXM9IjAgNTAgNTA7MzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIj48L2FuaW1hdGVUcmFuc2Zvcm0+ICA8L2NpcmNsZT48L3N2Zz4=\\\");\\n background-size: auto calc(min(50%, 400px));\\n}\",{\"id\":\"p1262\"},{\"id\":\"p1260\"},{\"id\":\"p1261\"}],\"width\":300,\"min_width\":300,\"margin\":[5,10],\"align\":\"start\",\"value\":\"2013-01-01 00:00:00\",\"min_date\":\"2013-01-01T00:00:00\",\"max_date\":\"2013-01-02T00:00:00\",\"disabled_dates\":null,\"enabled_dates\":null}}]}},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"p1268\",\"attributes\":{\"plot_id\":\"p1201\",\"comm_id\":\"4b43153872ad4be084265eac868a2b71\",\"client_comm_id\":\"01f1588cbead4893a16c413d0fcbaa64\"}}],\"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\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"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}]}]}};\n",
" var render_items = [{\"docid\":\"6d39ad58-c122-479f-8a40-36bb12b2eb79\",\"roots\":{\"p1201\":\"c9c54318-a1e7-483c-baab-77fb3fecbd71\"},\"root_ids\":[\"p1201\"]}];\n",
" var docs = Object.values(docs_json)\n",
" if (!docs) {\n",
" return\n",
" }\n",
" const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\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": [
"Row\n",
" [0] ParamFunction(function, _pane=HoloViews, defer_load=False)\n",
" [1] DatetimePicker(end=Timestamp('2013-01-02 0..., start=Timestamp('2013-01-01 0..., value=Timestamp('2013-01-01 0...)"
]
},
"execution_count": 8,
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "p1201"
}
},
"output_type": "execute_result"
}
],
"source": [
"def plot(t):\n",
" return xr_ds[\"air\"].sel(time=t, method='ffill').hvplot(x=\"lon\", y=\"lat\")\n",
"\n",
"pn.Row(pn.bind(plot, datetime_widget), datetime_widget)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "users-users-pangeo",
"language": "python",
"name": "conda-env-users-users-pangeo-py"
},
"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.12"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment