{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%%html \n",
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SI-649 Scientific visualization final\n",
"### *Uniqname: ningzr*"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Running Python 3.11\n",
"Adding xrange for backwards compatibility\n",
"%pylab is deprecated, use %matplotlib inline and import the required libraries.\n",
"Populating the interactive namespace from numpy and matplotlib\n"
]
},
{
"data": {
"application/javascript": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.2.1'.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.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.1.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));",
"application/vnd.holoviews_load.v0+json": ""
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": "\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",
"application/vnd.holoviews_load.v0+json": ""
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.holoviews_exec.v0+json": "",
"text/html": [
"\n",
""
]
},
"metadata": {
"application/vnd.holoviews_exec.v0+json": {
"id": "15fc2544-9f5e-464b-906f-9109c4212bb0"
}
},
"output_type": "display_data"
}
],
"source": [
"from __future__ import print_function, division, generators\n",
"import sys\n",
"print(\"Running Python {0}.{1}\".format( \n",
" sys.version_info[:2][0],sys.version_info[:2][1]))\n",
"if sys.version_info[:2] > (3, 0):\n",
" print(\"Adding xrange for backwards compatibility\".format(\n",
" sys.version_info[:2][0],sys.version_info[:2][1]))\n",
" from past.builtins import xrange\n",
"#from __future__ import print_function,division,generators\n",
"%pylab inline\n",
"from scipy.stats import pearsonr\n",
"import pandas as pd\n",
"import datetime as dt\n",
"from scipy.stats import kendalltau\n",
"import seaborn as sns\n",
"from random import randrange\n",
"sns.set(style=\"darkgrid\") # Optionally change plotstyle ('whitegrid', 'ticks','darkgrid')\n",
"import altair as alt\n",
"# Import panel and vega datasets\n",
"import panel as pn\n",
"pn.extension() \n",
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualization 1 Time series"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"monsoon = pd.read_csv('https://raw.githubusercontent.com/Koi4595/SI-649/main/Monsoon_data.csv', parse_dates=['Date'])\n",
"monsoon.index = monsoon.Date\n",
"# monsoon = monsoon.drop('Date', axis=1)\n",
"\n",
"olou = pd.read_csv('https://raw.githubusercontent.com/Koi4595/SI-649/main/Olou_counts.csv',parse_dates=['Date'])\n",
"olou.index = olou.Date\n",
"# olou = olou.drop('Date', axis=1) \n",
"olou['Date'] = pd.to_datetime(olou['Date'])"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "bc8f9a5919c7498bb536a4f67788748a",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Dropdown(description='Event Type:', options=('All', 'Drought', 'Flood'), value='All')"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "6a059c0d42e0479cb0245712e8e3e021",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"import ipywidgets as widgets\n",
"from IPython.display import display\n",
"from IPython.display import clear_output \n",
"import pandas as pd\n",
"\n",
"drought_years = [1965, 1966, 1968, 1972, 1974, 1979, 1982, 1986, 1987, 2002, 2004, 2009]\n",
"flood_years = [1964, 1970, 1971, 1973, 1975, 1978, 1983, 1988, 1990, 1994, 2007, 2008]\n",
"\n",
"\n",
"out = widgets.Output()\n",
"\n",
"event_selector = widgets.Dropdown(\n",
" options=['All', 'Drought', 'Flood'],\n",
" value='All', # 初始状态设置为“All”\n",
" description='Event Type:',\n",
")\n",
"\n",
"def plot_timeseries(event_type):\n",
" with out:\n",
" clear_output(wait=True)\n",
" fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 5), sharex=True)\n",
" \n",
" if event_type == 'Drought':\n",
" monsoon_selected_years = monsoon[monsoon['Date'].dt.year.isin(drought_years)]\n",
" olou_selected_years = olou[olou['Date'].dt.year.isin(drought_years)]\n",
" elif event_type == 'Flood':\n",
" monsoon_selected_years = monsoon[monsoon['Date'].dt.year.isin(flood_years)]\n",
" olou_selected_years = olou[olou['Date'].dt.year.isin(flood_years)]\n",
" else:\n",
" monsoon_selected_years = monsoon\n",
" olou_selected_years = olou\n",
" \n",
"\n",
" ax1.step(monsoon_selected_years['Date'], monsoon_selected_years['Precip'], where='mid', color='blue')\n",
" ax1.set_title('Monthly Precipitation for Selected Years')\n",
" ax1.set_ylabel('Precipitation (mm)')\n",
" ax1.grid(True)\n",
"\n",
" ax2.plot(olou_selected_years['Date'], olou_selected_years['Counts']/1000, 'r.', ms=3.0)\n",
" ax2.set_ylabel('Olou NM Counts for Selected Years (cnt./min. x 10^3)')\n",
" ax2.set_xlabel('Date')\n",
" ax2.grid(True)\n",
" \n",
" plt.tight_layout()\n",
" plt.show()\n",
"\n",
"def on_selector_change(change):\n",
" plot_timeseries(change.new)\n",
"\n",
"event_selector.observe(on_selector_change, names='value')\n",
"\n",
"out = widgets.Output()\n",
"display(event_selector, out)\n",
"\n",
"plot_timeseries(event_selector.value)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def return_stderr(data):\n",
" \"\"\"Calculate uncertainty of a np array as Standard Error of the Mean\"\"\"\n",
" return np.nanstd(data)/np.sqrt(np.count_nonzero(data) - 1)\n",
"\n",
"climo = {} # Produce a dic of monthly climatology using list comprehension\n",
"climo['means'] = [np.mean(monsoon.Precip[monsoon.index.month == (mnth+1)])\n",
" for mnth in xrange(12)]\n",
"climo['error'] = [return_stderr(monsoon.Precip[monsoon.index.month == (mnth+1)].values) \n",
" for mnth in xrange(12)]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"# Calculate monthly 𝛿 precip. (anomaly with respect to seasonal climatology)\n",
"delta = []\n",
"for date in monsoon.Precip.index:\n",
" delta.append(monsoon.Precip[date] - climo['means'][date.month-1])\n",
"dseries = pd.Series(delta, index=monsoon.index)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# Create a dictionary of June July August September data\n",
"def lookup_index(yr):\n",
" return ((monsoon.index.year == yr) & (monsoon.index.month >= 6) \n",
" &(monsoon.index.month <= 9))\n",
"jjas = {}\n",
"jjas['means']=[np.mean(dseries[lookup_index(yr)]) for yr in xrange(1964,2012,1)]\n",
"jjas['SEM']=[return_stderr(dseries[lookup_index(yr)])for yr in xrange(1964,2012,1)]\n",
"jjas['sum']=[np.sum(dseries[lookup_index(yr)]) for yr in xrange(1964,2012,1)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualization 2 JJAS condition"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"\n",
""
],
"text/plain": [
"alt.HConcatChart(...)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import altair as alt\n",
"import pandas as pd\n",
"\n",
"drought_years = [1965, 1966, 1968, 1972, 1974, 1979, 1982, 1986, 1987, 2002, 2004, 2009]\n",
"flood_years = [1964, 1970, 1971, 1973, 1975, 1978, 1983, 1988, 1990, 1994, 2007, 2008]\n",
"\n",
"color_scale = alt.Scale(\n",
" domain=['Drought', 'Flood', 'Normal'],\n",
" range=['darkred', 'lightblue', 'orange']\n",
")\n",
"\n",
"jjas_df = pd.DataFrame({\n",
" 'Year': range(1964, 2012),\n",
" 'Means': jjas['means'],\n",
" 'SEM': jjas['SEM'],\n",
" 'Sum': jjas['sum']\n",
"})\n",
"jjas_df['Condition'] = jjas_df['Year'].apply(lambda x: 'Drought' if x in drought_years else 'Flood' if x in flood_years else 'Normal')\n",
"\n",
"# Now, create the error bar chart and points with the color condition based on the 'Condition' column\n",
"error_bars = alt.Chart(jjas_df).mark_errorbar(extent='ci').encode(\n",
" x=alt.X('Year:O', axis=alt.Axis(values=list(range(1960, 2011, 10)))),\n",
" y=alt.Y('Means:Q', scale=alt.Scale(zero=False)),\n",
" yError='SEM:Q',\n",
" color=alt.Color('Condition:N', scale=color_scale)\n",
").properties(\n",
" width=400,\n",
" height=400,\n",
" title='Mean JJAS precipitation anomaly'\n",
")\n",
"\n",
"points = alt.Chart(jjas_df).mark_point(filled=True).encode(\n",
" x='Year:O',\n",
" y='Means:Q',\n",
" color=alt.Color('Condition', legend=alt.Legend(title='Condition')) # Add a legend\n",
")\n",
"\n",
"# Combine the error bars with the points\n",
"error_chart = (error_bars + points).interactive()\n",
"\n",
"# Create the histogram chart, independent of the conditions\n",
"histogram = alt.Chart(jjas_df).transform_density(\n",
" density='Means',\n",
" as_=['Means', 'Density']\n",
").mark_area().encode(\n",
" x=\"Means:Q\",\n",
" y='Density:Q',\n",
" tooltip=['Means:Q', 'Density:Q']\n",
").properties(\n",
" width=400,\n",
" height=400,\n",
" title='Distribution of JJAS anomalies'\n",
")\n",
"\n",
"# Horizontally concatenate the error chart with the histogram\n",
"chart2 = alt.hconcat(error_chart, histogram).resolve_legend(color='independent')\n",
"\n",
"# Display the final concatenated chart\n",
"chart2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Visualization 3 Drought/Flood sample"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"def make_cframe(c_years):\n",
" '''\n",
" Function to take a list of composite years (c_years)\n",
" and create a numpy array (c_years, months) for analysis.\n",
" Also returns back a month-wise set of means, and SEM values.\n",
" '''\n",
" c_group = np.zeros((12,12),dtype=float) \n",
" for n, yr in enumerate(c_years):\n",
" tmp = olou.index.year == yr\n",
" for i in xrange(len(olou.Counts[tmp])):\n",
" c_group[n,i] = olou.Counts[tmp][i]\n",
" aaa = np.where(c_group == 0)\n",
" c_group[aaa] = np.nan\n",
" c_means = []\n",
" c_errors = []\n",
" for i in xrange(12):\n",
" c_means.append(np.nanmean(c_group[:,i])) # per month, all years\n",
" c_errors.append(return_stderr(c_group[:,i]))\n",
" return c_group,c_means,c_errors"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\HP\\AppData\\Local\\Temp\\ipykernel_27816\\2318271557.py:11: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
" c_group[n,i] = olou.Counts[tmp][i]\n"
]
}
],
"source": [
"drought_years = [1965, 1966, 1968, 1972, 1974,1979,\n",
" 1982, 1986, 1987, 2002, 2004, 2009]\n",
"\n",
"flood_years = [1964, 1970, 1971, 1973, 1975, 1978, \n",
" 1983, 1988, 1990, 1994, 2007, 2008]\n",
"\n",
"d_group,d_means,d_errors = make_cframe(drought_years)\n",
"f_group,f_means,f_errors = make_cframe(flood_years)\n",
"\n",
"d_means = np.array(d_means) * 0.001\n",
"f_means = np.array(f_means) * 0.001\n",
"d_errors = np.array(d_errors) * 0.001 # Make the values smaller for plotting\n",
"f_errors = np.array(f_errors) * 0.001"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\HP\\AppData\\Local\\Temp\\ipykernel_27816\\461619174.py:18: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
" ax.set_xticklabels(xlabs)\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApUAAAFUCAYAAAB1DccrAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAChiUlEQVR4nOzdd3wT9f/A8dddRtO9oUCZRaYgeyhDQERAEFAUEWUKshWQMmQqG0RkyRIEVNzgF0G+7vVTkfFVhuxdoAW6myZN7u73R6VSyui4NGn7eT4eFXu53L0/aXJ532dKmqZpCIIgCIIgCEIByO4OQBAEQRAEQSj6RFIpCIIgCIIgFJhIKgVBEARBEIQCE0mlIAiCIAiCUGAiqRQEQRAEQRAKTCSVgiAIgiAIQoGJpFIQBEEQBEEoMJFUCoIgCIIgCAUmkkpByAWxRoAgCIIg3JlIKgVdPPvss1SvXj3rp0aNGtSvX58ePXqwadMmFEVxd4g5fPrpp1SvXp0LFy7ccb+VK1eybt26QorKNS5cuED16tX59NNP3R2KIJQIEyZMyHZNvPln27ZtQOa189lnny20uKpXr87SpUsL7XyuUNivmZB7RncHIBQftWrVYtq0aQAoikJSUhI//PADs2fPZu/evSxevBhJktwcZd698cYbjBgxwt1hCIJQxISHh7Ns2bJbPlahQoVCjkYQXE8klYJu/Pz8qFevXrZtbdu2pXLlysyZM4e2bdvStWtX9wQnCIJQyMxmc45roiAUZ6L5W3C5Z599llKlSrFly5asbW3btmX27Nn07duXBg0aMHXqVADi4uKYOHEirVu3pm7dujzxxBN888032Y53q+abpUuXUr169WzbPvvsMzp16kSdOnXo2rUrv/76K7Vq1crRBPznn3/Sq1cv6tSpw4MPPpitqfv6MZctW5bj+Dc6dOgQffv2pWHDhtSvX59+/frx559/Ztvno48+okePHtSrV4+6devy2GOPsWPHjqzHP/30U+rUqcPevXt5/PHHqVOnDh06dODbb7/l1KlT9O3bl/vuu4/27dvzxRdfZHte9erV+fPPP+nevTt169alS5cu2Y59KxcvXmTMmDE0adKE++67j759+3L48OE7PkcQBNey2+0sX76cRx55hDp16vDwww+zevVqVFXNtt+OHTvo0aMH9evX54EHHmDq1KkkJSVl22f37t089dRT3HfffXTo0IH/+7//y9X5Z8yYQatWrbj33nt55JFHePvtt7Ptc+TIEUaMGEGzZs2oXbs2LVu25LXXXsNms2XtU716dd5//30mTJhAw4YNadKkSdY+8+bNo1mzZjRt2pTJkydjt9uzPW/z5s1ER0dTv3597r///hzHvpmqqqxevZr27dtz77330qFDBzZt2nTXsgr6E0ml4HIGg4HmzZvz119/4XQ6s7a/++67WQniY489xtWrV3niiSfYvXs3L730EkuXLqVcuXIMHz6czz//PE/n3Lp1KxMmTKBBgwasWLGCDh06MGzYsFv27Zw+fTqPPvooq1atom7dusyfP5/vvvsOgA8++ACAJ554Iuv/b5aamsqgQYMIDg7mzTffZPHixaSnpzNw4EBSUlKyyjp16lTatWvHqlWrWLBgASaTiZdffpmLFy9mHcvpdDJmzBh69erFihUr8PLyYty4cbzwwgs8+OCDLFmyhPDwcKKjo7l8+XK2OIYMGUK7du1YtmwZlStXZsyYMTkS8uvi4+Pp1asXhw4dYsqUKSxatAhVVXnmmWc4efJknl5rQRBuz+l05vi53cA/TdN44YUXWLt2LU888QRvvfUWjzzyCG+88UZW1yKAFStW8NJLL3Hffffx5ptvMnz4cHbt2sWzzz6blXwdOnSIAQMG4Ofnx5IlS+jbty9jxoy5a7yzZs3ihx9+IDo6mnXr1tGuXTvmzZuXdTMeFxfHM888Q3p6OnPnzmXNmjV07NiRTZs2sWHDhmzHWrhwIWazmWXLlvHYY4+xadMmunXrxqVLl1iwYAG9evXi448/zpEALlmyhGvXrvHGG28waNAgPvzwQ15++eXbxjx9+nTefPNNunbtmvWazZ49m+XLl9+1vIK+RPO3UCjCwsJwOBwkJiYSFhYGQKlSpZgwYQKynHlvs2DBAuLj49m5cyfly5cHoHXr1vTr14/58+fz6KOPZu17N0uWLKFNmza89tprALRs2RKTycSiRYty7DtmzBiefvppAOrVq8e3337Lb7/9Rps2bbKariIiIm7bjHXixAni4+N59tlnadiwIQBVqlRhy5YtpKam4u/vz/nz5xkwYADDhw/Pel5kZCQ9evRg3759lC1bFsi8437hhRfo2bMnAMnJyYwZM4a+ffvSv3//rNfy8ccf5+DBg0RERGQdr0+fPll9P1u2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",
"text/plain": [
"