{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# B14. Making plots\n", "\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n", " \n", " Loading BokehJS ...\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function now() {\n", " return new Date();\n", " }\n", "\n", " const force = true;\n", "\n", " if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n", " root._bokeh_onload_callbacks = [];\n", " root._bokeh_is_loading = undefined;\n", " }\n", "\n", "const JS_MIME_TYPE = 'application/javascript';\n", " const HTML_MIME_TYPE = 'text/html';\n", " const EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n", " const CLASS_NAME = 'output_bokeh rendered_html';\n", "\n", " /**\n", " * Render data to the DOM node\n", " */\n", " function render(props, node) {\n", " const script = document.createElement(\"script\");\n", " node.appendChild(script);\n", " }\n", "\n", " /**\n", " * Handle when an output is cleared or removed\n", " */\n", " function handleClearOutput(event, handle) {\n", " const cell = handle.cell;\n", "\n", " const id = cell.output_area._bokeh_element_id;\n", " const server_id = cell.output_area._bokeh_server_id;\n", " // Clean up Bokeh references\n", " if (id != null && id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", "\n", " if (server_id !== undefined) {\n", " // Clean up Bokeh references\n", " const cmd_clean = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n", " cell.notebook.kernel.execute(cmd_clean, {\n", " iopub: {\n", " output: function(msg) {\n", " const id = msg.content.text.trim();\n", " if (id in Bokeh.index) {\n", " Bokeh.index[id].model.document.clear();\n", " delete Bokeh.index[id];\n", " }\n", " }\n", " }\n", " });\n", " // Destroy server and session\n", " const cmd_destroy = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n", " cell.notebook.kernel.execute(cmd_destroy);\n", " }\n", " }\n", "\n", " /**\n", " * Handle when a new output is added\n", " */\n", " function handleAddOutput(event, handle) {\n", " const output_area = handle.output_area;\n", " const output = handle.output;\n", "\n", " // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n", " if ((output.output_type != \"display_data\") || (!Object.prototype.hasOwnProperty.call(output.data, EXEC_MIME_TYPE))) {\n", " return\n", " }\n", "\n", " const toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n", "\n", " if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n", " toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n", " // store reference to embed id on output_area\n", " output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n", " }\n", " if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n", " const bk_div = document.createElement(\"div\");\n", " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n", " const script_attrs = bk_div.children[0].attributes;\n", " for (let i = 0; i < script_attrs.length; i++) {\n", " toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n", " toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n", " }\n", " // store reference to server id on output_area\n", " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n", " }\n", " }\n", "\n", " function register_renderer(events, OutputArea) {\n", "\n", " function append_mime(data, metadata, element) {\n", " // create a DOM node to render to\n", " const 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", " const props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n", " render(props, toinsert[toinsert.length - 1]);\n", " element.append(toinsert);\n", " return toinsert\n", " }\n", "\n", " /* Handle when an output is cleared or removed */\n", " events.on('clear_output.CodeCell', handleClearOutput);\n", " events.on('delete.Cell', handleClearOutput);\n", "\n", " /* Handle when a new output is added */\n", " events.on('output_added.OutputArea', handleAddOutput);\n", "\n", " /**\n", " * Register the mime type and append_mime function with output_area\n", " */\n", " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n", " /* Is output safe? */\n", " safe: true,\n", " /* Index of renderer in `output_area.display_order` */\n", " index: 0\n", " });\n", " }\n", "\n", " // register the mime type if in Jupyter Notebook environment and previously unregistered\n", " if (root.Jupyter !== undefined) {\n", " const events = require('base/js/events');\n", " const OutputArea = require('notebook/js/outputarea').OutputArea;\n", "\n", " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n", " register_renderer(events, OutputArea);\n", " }\n", " }\n", " if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n", " root._bokeh_timeout = Date.now() + 5000;\n", " root._bokeh_failed_load = false;\n", " }\n", "\n", " const NB_LOAD_WARNING = {'data': {'text/html':\n", " \"
\\n\"+\n", " \"

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

\\n\"+\n", " \"\\n\"+\n", " \"\\n\"+\n", " \"from bokeh.resources import INLINE\\n\"+\n", " \"output_notebook(resources=INLINE)\\n\"+\n", " \"\\n\"+\n", " \"
\"}};\n", "\n", " function display_loaded() {\n", " const el = document.getElementById(\"p1001\");\n", " if (el != null) {\n", " el.textContent = \"BokehJS is loading...\";\n", " }\n", " if (root.Bokeh !== undefined) {\n", " if (el != null) {\n", " el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n", " }\n", " } else if (Date.now() < root._bokeh_timeout) {\n", " setTimeout(display_loaded, 100)\n", " }\n", " }\n", "\n", " 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, callback) {\n", " if (css_urls == null) css_urls = [];\n", " if (js_urls == null) js_urls = [];\n", "\n", " root._bokeh_onload_callbacks.push(callback);\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 == null || js_urls.length === 0) {\n", " run_callbacks();\n", " return null;\n", " }\n", " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n", " root._bokeh_is_loading = css_urls.length + js_urls.length;\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", "\n", " function on_error(url) {\n", " console.error(\"failed to load \" + url);\n", " }\n", "\n", " for (let i = 0; i < css_urls.length; i++) {\n", " const url = css_urls[i];\n", " const element = document.createElement(\"link\");\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\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", " }\n", "\n", " for (let i = 0; i < js_urls.length; i++) {\n", " const url = js_urls[i];\n", " const element = document.createElement('script');\n", " element.onload = on_load;\n", " element.onerror = on_error.bind(null, url);\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", " };\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", " const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.1.0.min.js\"];\n", " const css_urls = [];\n", "\n", " const inline_js = [ function(Bokeh) {\n", " Bokeh.set_log_level(\"info\");\n", " },\n", "function(Bokeh) {\n", " }\n", " ];\n", "\n", " function run_inline_js() {\n", " if (root.Bokeh !== undefined || force === true) {\n", " for (let i = 0; i < inline_js.length; i++) {\n", " inline_js[i].call(root, root.Bokeh);\n", " }\n", "if (force === true) {\n", " display_loaded();\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", " } else if (force !== true) {\n", " const cell = $(document.getElementById(\"p1001\")).parents('.cell').data().cell;\n", " cell.output_area.append_execute_result(NB_LOAD_WARNING)\n", " }\n", " }\n", "\n", " if (root._bokeh_is_loading === 0) {\n", " console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n", " run_inline_js();\n", " } else {\n", " load_libs(css_urls, js_urls, function() {\n", " console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n", " run_inline_js();\n", " });\n", " }\n", "}(window));" ], "application/vnd.bokehjs_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n const force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n const NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

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

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n const el = document.getElementById(\"p1001\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n 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, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\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 == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\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\n function on_error(url) {\n console.error(\"failed to load \" + url);\n }\n\n for (let i = 0; i < css_urls.length; i++) {\n const url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\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 }\n\n for (let i = 0; i < js_urls.length; i++) {\n const url = js_urls[i];\n const element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error.bind(null, url);\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 };\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 const js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.1.0.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-mathjax-3.1.0.min.js\"];\n const css_urls = [];\n\n const inline_js = [ function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {\n }\n ];\n\n function run_inline_js() {\n if (root.Bokeh !== undefined || force === true) {\n for (let i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\nif (force === true) {\n display_loaded();\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 } else if (force !== true) {\n const cell = $(document.getElementById(\"p1001\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Colab setup ------------------\n", "import os, sys\n", "if \"google.colab\" in sys.modules:\n", " data_path = \"https://biocircuits.github.io/chapters/data/\"\n", "else:\n", " data_path = \"data/\"\n", "# ------------------------------\n", "\n", "import numpy as np\n", "import scipy.special\n", "import pandas as pd\n", "\n", "import colorcet\n", "\n", "# Our main plotting package (must have explicit import of submodules)\n", "import bokeh.io\n", "import bokeh.models\n", "import bokeh.plotting\n", "\n", "# Enable viewing Bokeh plots in the notebook\n", "bokeh.io.output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "We have seen that Pandas is a power tool for loading and organizing data sets, as well as computing summary statistics from them. In nearly all applications with data, and indeed with theoretical models, we want to be able to _plot_ them. In this section, we will learn about how to make plots with [Bokeh](https://bokeh.org).\n", "\n", "Importantly, note that Bokeh's submodules often have to be explicitly imported, as we did in the code cell at the top of this notebook. Note also that if you want your plots to be viewable (and interactive) in the notebook, you need to execute\n", "\n", "```python\n", "bokeh.io.output_notebook()\n", "```\n", "\n", "at the top of the notebook (as we have done). Finally, note that we also have to have installed the Bokeh JupyterLab extension, which we did in [Chapter 0](../chapters/00_setting_up_python_computing_environment.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bokeh's grammar and our first plot with Bokeh\n", "\n", "Constructing a plot with Bokeh consists of four main steps.\n", "\n", "1. Creating a figure on which to populate **glyphs** (symbols that represent data, e.g., dots for a scatter plot). Think of this figure as a \"canvas\" which sets the space on which you will \"paint\" your glyphs.\n", "2. Defining a data source that is the reference used to place the glyphs.\n", "3. Choose the kind of glyph you would like.\n", "4. Annotate the columns of data source to determine how they are used to place (and possibly color, scale, etc.) the glyph.\n", "\n", "After completing these steps, you need to render the graphic.\n", "\n", "Let's go through these steps in generating a scatter plot of the data set So you have the concrete example in mind, the final graphic will look like this:\n", "\n", "
\n", " \n", "![first_bokeh_plot](first_bokeh_plot.png)\n", "\n", "
\n", "\n", "Before plotting, we of course to load in the data set and compute the normalized intensity for each strain as we did in the [previous section](b13_split_apply_combine.ipynb)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv(os.path.join(data_path, \"elowitz_et_al_2002_fig_3a.csv\"))\n", "\n", "df[[\"norm CFP\", \"norm YFP\"]] = df.groupby(\"strain\", group_keys=False)[\n", " [\"CFP\", \"YFP\"]\n", "].apply(lambda x: x / x.mean())\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the data set ready, we can proceed to plotting.\n", "\n", "1. Our first step is creating a figure, our \"canvas.\" In creating the figure, we are implicitly thinking about what kind of representation for our data we want. That is, we have to specify axes and their labels. We might also want to specify the title of the figure, whether or not to have grid lines, and all sorts of other customizations. Naturally, we also want to specify the shape of the figure.\n", "\n", "(Almost) all of this is accomplished in Bokeh by making a call to `bokeh.plotting.figure()` with the appropriate keyword arguments. Note that we set the `x_range` and `y_range` keyword arguments such that the x- and y-axes have the same scale." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Create the figure, stored in variable `p`\n", "p = bokeh.plotting.figure(\n", " frame_width=300,\n", " frame_height=300,\n", " x_axis_label='norm. CFP intensity',\n", " y_axis_label='norm. YFP intensity',\n", " x_range=[0.65, 1.45],\n", " y_range=[0.65, 1.45],\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are many more keyword attributes you can assign, including [all of those listed in the Bokeh Plot class](https://bokeh.pydata.org/en/latest/docs/reference/models/plots.html#bokeh.models.plots.Plot) and [the additional ones listed in the Bokeh Figure class](https://bokeh.pydata.org/en/latest/docs/reference/plotting.html#bokeh.plotting.figure.Figure).\n", "\n", "2. Now that we have set up our canvas, we can decide on the data source. It is convenient to create a **ColumnDataSource**, a special Bokeh object that holds data to be displayed in a plot. (We will later see that we can change the data in a ColumnDataSource and the plot will automatically update!) Conveniently, we can instantiate a ColumnDataSource directly from a Pandas data frame." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "source = bokeh.models.ColumnDataSource(df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We could also instantiate a data source using a dictionary of arrays, like\n", "\n", " source = bokeh.models.ColumnDataSource(dict(x=[1, 2, 3, 4], y=[1, 4, 9, 16]))\n", "\n", "3. We will choose dots (or circles) as our glyph. This kind of glyph requires that we specify which column of the data source will serve to place the glyphs along the $x$-axis and which will serve to place the glyphs along the $y$-axis.\n", "\n", "4. We choose the `'norm CFP'` column to specify the $x$-coordinate of the glyph and the `'norm YFP'` column to specify the $y$-coordinate. We already made this decision when we set up our axis labels, but we did not necessarily have to make that decision at that point.\n", "\n", "Steps 3 and 4 are accomplished by calling one of the **glyph methods** of the Bokeh `Figure` instance, `p`. Since we are choosing dots, the appropriate method is `p.circle()`, and we use the `source`, `x`, and `y` kwargs to specify the positions of the glyphs." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "p.circle(\n", " source=source,\n", " x='norm CFP',\n", " y='norm YFP'\n", ");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have built the plot, we can render it in the notebook using `bokeh.io.show()`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"9339a04a-ab64-47b7-889f-79681417742f\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1002\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1011\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1013\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1015\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1017\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1010\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1057\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1048\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1050\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1049\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[534],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\"],\"shape\":[534],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[534],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"gQUAAG8FAADnBQAAtAUAAGYGAAAkBgAAqgUAADcFAACZBgAAnAUAANEFAAB9BgAARQYAAMkFAACSBQAA0wUAACYGAAAABQAAkwUAAMcFAADrBQAAAAYAAAQFAABfBgAASgUAAMcFAAADBgAAgwUAAKEFAAB+BQAAqwUAAHsFAABDBQAA+QQAANgFAABxBAAAbwUAADgFAAC4BAAAtQUAAIcEAAB1BQAAxwUAAD4FAAAxBQAANQUAAJcEAADkBAAAewUAAAMFAACZBQAAfgUAAP0FAAA2BQAAYAYAAH8GAABEBgAAKgUAAHsFAAAuBgAAIQYAAEgGAAAgBgAAEwYAAP8FAABsBQAA6wUAALcFAACVBQAAqQUAAI4FAAC9BQAAJQUAAMcEAAD+BQAAhQUAAKEFAACZBQAADgUAAGIFAADyBAAAjQUAAMQFAAD5BAAApQUAAI4FAACmBQAAlwUAABMFAAAPBQAAnwUAAM4FAAAcBQAAOwUAAE4FAACjBQAAJwUAAKMFAADVBAAAugQAAOsFAADaBQAABQUAANsFAAD0BAAAhwUAAAAFAAA/BQAANgYAAKAFAAAuBQAAawUAAP8EAAAEBQAAxQQAAAQFAAAqBQAAjwUAAI4FAABGBQAAFwYAANkFAAByBQAAmAUAAPsFAADcBAAAcwUAAEsGAACUBQAAVgUAANAFAAAYBgAAtwUAAHoFAACdBQAAKAUAAKkFAAARBQAAQAUAANcFAADLBAAA5AQAAL0FAADlBQAAuAUAAMoFAABwBQAAkgUAAHUGAADjBQAACwUAANoFAACdBQAApQQAAIYFAAAdBQAAdwYAAFgFAAClBAAAlwUAADoFAACqBQAAywQAAC8FAABjBQAAOAYAAAAGAACFBQAAEwYAAKMFAAD0BAAA0QQAACAFAAD1BQAAhgUAAKkFAADsBAAAJgUAAB8FAACCBQAAZgYAAKwFAABnBQAAEgUAANYFAACEBQAAeQUAAAIFAAASBQAAIAYAAGgFAAAXBQAANwUAABsFAACRBQAAsAUAACgFAACbBQAAugUAAB8FAADnBQAA5QUAAEIGAACIBQAAfQUAAOoFAACTBQAAtAUAAHIFAAAvBQAAYwUAABMFAAA2BgAAPQUAANAEAACoBQAAnwUAAAAFAAATBgAA+gUAAIMGAACXBQAAMwUAAPwFAAArBQAAQwUAAOQEAAABBQAAlgUAAGMEAAB9BQAA7wQAAHUFAACkBAAAMQYAABEFAACHBQAAbwUAAKQFAACcBQAAGgUAAD8FAAAFBQAABQYAAEAFAACoBQAAKwUAAB8FAACxBAAASwUAAAUJAABaCQAAYQgAACQJAADFCAAArAcAAA4HAAAqCAAAAQcAAKgIAAB6CAAAUAgAAPUGAADZBwAAcwYAACgIAABaBwAAxAYAADkIAAAqCAAAxgcAAEAHAAAkBwAAIgYAAHIIAACbCAAATgcAAD0HAADPBwAAzgcAAI4GAAAOBwAAHAcAAI4HAAB0BwAAnAcAADAGAADiBQAA9wUAAB0HAAApBwAAwgUAAK4IAABDCQAAhgcAAGsIAADKBgAAEQcAADkIAACKBwAAigYAACcJAAAnCAAA0QYAAFMJAAAGCAAAGQcAAPQHAAC0BwAAlggAAMEIAABgCAAAZgYAAHIIAACPCQAAdwcAAEAHAADgCAAA8AgAANcHAADOCAAAmggAAGYIAACqCAAABgcAAIwHAADYCAAAZwcAAEAGAABGBwAAcAcAAMwGAACFCQAAIQcAADEGAABVBwAACAYAACcHAADgCAAAuwcAABMIAABdBwAAyQcAAOEGAAB4CAAA1gcAAFoIAAC0BwAAhwYAANUGAAAxBgAA3AUAAF4IAAAmCAAA9QcAAJAGAAAuBwAAJAYAAPEGAACTBwAA6wcAAIEHAAADCAAA2AcAADIIAACuBwAAxQYAALIGAAANBwAAkAcAAE0HAAArBwAAEQgAAFAJAAA5BwAA6AUAABAIAACrBgAAvggAALoGAAAEBwAA+wYAAJAHAADnBwAACQcAAPIGAAChBwAASwgAABQHAABlBgAAbAgAABsHAABHBwAApQcAAK4HAACSBwAAWgYAAJAHAADQBwAA2AcAADcHAAD4BgAAZQYAAIcHAAADCAAAvQcAAM8GAAC/BwAAQwcAAFoHAAAGBwAAwwcAAAoHAACtBgAA/QUAALoIAADuBwAA5wcAADQJAAB3BgAAHAYAABcHAAAuBwAAMgcAACsIAADbBgAAZwYAAIUHAAC/BgAAsggAAFgHAADNBgAAjgYAAMsGAACFBgAAlgcAALUHAABgBwAA4wYAAOMHAABMCAAA3AcAAGQIAAC6BgAAKAcAAIAIAAC1BwAAgAcAALQIAABACAAAPgcAADMHAABLBwAAQwcAAEMIAADzCAAAYQcAAAkIAACpBQAA0AUAAK4GAADoBgAAdAcAANoGAAADCAAAkAYAAPAGAAC9BgAAPAcAAOcHAAA5BwAAhAYAAPgGAAAcBwAA+wcAAGMJAABxBgAAAAgAAKQGAADWBgAAqAcAAA8HAAArBwAAZwYAACcHAABPBwAAZgcAALoGAAB/BgAAMAYAAFAHAAB7BwAAIgcAAEwGAAAoBwAA1QgAADYHAAChBgAAPAcAAE8HAACkBgAAbQcAABsGAAAZBgAAygYAAE0HAADZBgAAdAcAAAMIAADxBgAAswUAALUGAAAABwAA0QUAACQGAAC0CAAAwQcAAK0HAACgBgAAdAYAAJ0GAABhBgAAUAYAANgHAAAwBwAARQcAAPcGAABbCQAAHgcAABkGAACJBgAAewYAAKgHAAATBgAA\"},\"shape\":[534],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[534],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[534],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1058\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1059\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1054\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1055\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1056\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b4\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1008\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1033\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1034\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1035\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1036\",\"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\":\"SaveTool\",\"id\":\"p1037\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1038\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1039\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1026\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1027\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1029\"},\"axis_label\":\"norm. YFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1028\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1019\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1020\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1022\"},\"axis_label\":\"norm. CFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1021\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1025\",\"attributes\":{\"axis\":{\"id\":\"p1019\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1032\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1026\"}}}],\"frame_width\":300,\"frame_height\":300}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"9339a04a-ab64-47b7-889f-79681417742f\",\"roots\":{\"p1002\":\"5698a9f7-0baf-4606-ac81-722a81d3289f\"},\"root_ids\":[\"p1002\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1002" } }, "output_type": "display_data" } ], "source": [ "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In looking at the plot, notice a toolbar to right of the plot that enables you to zoom and pan within the plot." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The importance of tidy data frames\n", "\n", "It might be clear for you now that building a plot in this way requires that the data frame you use be [tidy](b13_split_apply_combine.ipynb). The organization of tidy data is really what enables this and high level plotting functionality. There is a well-specified organization of the data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Coloring with other dimensions\n", "\n", "In the above plot, we did not distinguish the two strains. We really want m22 in one color and d22 in another. To do this, we take advantage of two features of Bokeh.\n", "\n", "1. We can make multiple calls to `p.circle()` to populate more and more glyphs.\n", "2. `p.circle()`, like all of the glyph methods, has many keyword arguments, including `color` and `legend_label`, which will enable us to color the glyphs and include a legend.\n", "\n", "We can loop through the data frame grouped by `'strain'` and populate the glyphs as we go along. We will want different colors for the glyphs, depending on which strain they correspond to. The [colorcet package](https://colorcet.holoviz.org/) conveniently provides nice color palettes for plots, and we will use the colors in its Category10 palette, since we are coloring according to strain, which is a categorical variable (as opposed to a quantitative variable)." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"cd1df815-74db-4b31-9cf4-fa6dd2c8cbf0\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1149\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1158\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1160\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1162\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1164\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1157\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1204\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1195\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1197\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1196\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"+gAAAPsAAAD8AAAA/QAAAP4AAAD/AAAAAAEAAAEBAAACAQAAAwEAAAQBAAAFAQAABgEAAAcBAAAIAQAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAABMBAAAUAQAAFQEAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAAMAEAADEBAAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA4AQAAOQEAADoBAAA7AQAAPAEAAD0BAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEkBAABKAQAASwEAAEwBAABNAQAATgEAAE8BAABQAQAAUQEAAFIBAABTAQAAVAEAAFUBAABWAQAAVwEAAFgBAABZAQAAWgEAAFsBAABcAQAAXQEAAF4BAABfAQAAYAEAAGEBAABiAQAAYwEAAGQBAABlAQAAZgEAAGcBAABoAQAAaQEAAGoBAABrAQAAbAEAAG0BAABuAQAAbwEAAHABAABxAQAAcgEAAHMBAAB0AQAAdQEAAHYBAAB3AQAAeAEAAHkBAAB6AQAAewEAAHwBAAB9AQAAfgEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAhwEAAIgBAACJAQAAigEAAIsBAACMAQAAjQEAAI4BAACPAQAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAAmQEAAJoBAACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAAChAQAAogEAAKMBAACkAQAApQEAAKYBAACnAQAAqAEAAKkBAACqAQAAqwEAAKwBAACtAQAArgEAAK8BAACwAQAAsQEAALIBAACzAQAAtAEAALUBAAC2AQAAtwEAALgBAAC5AQAAugEAALsBAAC8AQAAvQEAAL4BAAC/AQAAwAEAAMEBAADCAQAAwwEAAMQBAADFAQAAxgEAAMcBAADIAQAAyQEAAMoBAADLAQAAzAEAAM0BAADOAQAAzwEAANABAADRAQAA0gEAANMBAADUAQAA1QEAANYBAADXAQAA2AEAANkBAADaAQAA2wEAANwBAADdAQAA3gEAAN8BAADgAQAA4QEAAOIBAADjAQAA5AEAAOUBAADmAQAA5wEAAOgBAADpAQAA6gEAAOsBAADsAQAA7QEAAO4BAADvAQAA8AEAAPEBAADyAQAA8wEAAPQBAAD1AQAA9gEAAPcBAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\"],\"shape\":[284],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CAwAAAoMAABNCwAA7QsAAEsLAACyCgAAxgkAAPwKAABrCwAAkgsAAI4MAADXCgAA5gkAAKMKAAATCgAA6woAAJYJAABdCgAAsw0AALYIAAD4CgAA0AkAANMKAAACCQAANgoAAOMKAABcCgAAXQkAAAAKAACtCQAAGgkAAL0IAABSCAAAIAkAAEMJAABqCQAASQgAAHQHAACTBwAAVQkAAFoHAABiBwAAhwoAAI0LAAAzCgAAwAsAAC4KAACOCwAAAQsAAPQKAAB0CwAAwgwAAPsKAABZCgAAnAwAAKAKAADYCQAAaA0AAPwMAACHDAAAVAwAAKALAABFDAAADQwAAIoLAADmCwAA/AkAAOkLAAA0DAAAvQoAAMILAABtCwAAcgsAAAoNAACVDAAAegsAAJELAABiCwAAUgoAAC8KAADUCQAAigoAABMMAAApCgAAlQkAAOYKAABrCgAA4AkAALsJAABCCgAAEAsAAD0JAADUCgAAwwkAAJgJAAAZCwAAnQsAAG4LAABVCAAA4wgAAK8IAAAiCgAAGgsAAFwLAABTCgAArAkAAO0JAADGCAAATQoAACAKAADHCgAAFgsAAOwJAAAaCgAABAsAAGUJAADPCQAAswsAAPkIAACnCwAAggoAAMsIAAAbCgAAlAgAAEQKAABYCAAAMgoAAFsHAADPCwAA6gkAAPkJAADACgAASgoAAEgLAAD9CQAAyQkAAKEKAABICAAA7goAAPkIAACpCwAAxAsAAOEKAAAXCgAA9goAAJ8JAACpCgAASwsAAK4KAABCCgAA4goAABgKAACcCQAAMwsAAPkLAABRCwAAMAsAACcLAACFCwAAAwsAACYKAAARCgAAnAoAADgJAAASCgAAhAwAAJUJAACKCgAAFgsAAIILAABMBwAA3wkAAOQLAAACCgAAJwkAAMsJAACPCAAATAoAAPUIAADWBwAANwoAAAoKAAA9CgAAAQoAALIJAABOCgAAewoAAD4JAADpCQAArAkAAAkMAAANCwAAiw0AACgKAAD3CQAADwoAALsMAAB8CwAAaQoAADILAACFCgAAwQkAAJELAAATDAAADQ0AAD0LAABJCwAA9QwAAD0JAAD2CgAAGAoAAC0KAAAyCwAAIAoAAO8KAAAVCgAAOgoAANIKAABlCgAA4wgAAJUKAAClCQAAkgoAAH8KAABnCAAAmggAAJEJAACHCwAAPgsAAIEKAAB/CgAANwkAALYKAABMCwAACgsAAEAKAAD+CQAAjgoAAN8JAADrCQAAWwsAAJkLAAD0CgAApwoAAKcKAABuDgAAFwsAAN8JAAC8CQAAigoAAPwKAACdCgAALgoAACsKAAChCgAA7goAAAwKAAABDAAAdgoAACgKAAAeCQAAfgkAABQIAAAxCQAAWgoAAFcNAAD2CQAAtgkAAGoIAAACCQAAPggAACEJAACbCAAA9AkAAFIKAAABCgAAMwkAADkJAADGCQAAyQgAAMEIAAApCQAA2AoAAEIIAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BQkAAFoJAABhCAAAJAkAAMUIAACsBwAADgcAACoIAAABBwAAqAgAAHoIAABQCAAA9QYAANkHAABzBgAAKAgAAFoHAADEBgAAOQgAACoIAADGBwAAQAcAACQHAAAiBgAAcggAAJsIAABOBwAAPQcAAM8HAADOBwAAjgYAAA4HAAAcBwAAjgcAAHQHAACcBwAAMAYAAOIFAAD3BQAAHQcAACkHAADCBQAArggAAEMJAACGBwAAawgAAMoGAAARBwAAOQgAAIoHAACKBgAAJwkAACcIAADRBgAAUwkAAAYIAAAZBwAA9AcAALQHAACWCAAAwQgAAGAIAABmBgAAcggAAI8JAAB3BwAAQAcAAOAIAADwCAAA1wcAAM4IAACaCAAAZggAAKoIAAAGBwAAjAcAANgIAABnBwAAQAYAAEYHAABwBwAAzAYAAIUJAAAhBwAAMQYAAFUHAAAIBgAAJwcAAOAIAAC7BwAAEwgAAF0HAADJBwAA4QYAAHgIAADWBwAAWggAALQHAACHBgAA1QYAADEGAADcBQAAXggAACYIAAD1BwAAkAYAAC4HAAAkBgAA8QYAAJMHAADrBwAAgQcAAAMIAADYBwAAMggAAK4HAADFBgAAsgYAAA0HAACQBwAATQcAACsHAAARCAAAUAkAADkHAADoBQAAEAgAAKsGAAC+CAAAugYAAAQHAAD7BgAAkAcAAOcHAAAJBwAA8gYAAKEHAABLCAAAFAcAAGUGAABsCAAAGwcAAEcHAAClBwAArgcAAJIHAABaBgAAkAcAANAHAADYBwAANwcAAPgGAABlBgAAhwcAAAMIAAC9BwAAzwYAAL8HAABDBwAAWgcAAAYHAADDBwAACgcAAK0GAAD9BQAAuggAAO4HAADnBwAANAkAAHcGAAAcBgAAFwcAAC4HAAAyBwAAKwgAANsGAABnBgAAhQcAAL8GAACyCAAAWAcAAM0GAACOBgAAywYAAIUGAACWBwAAtQcAAGAHAADjBgAA4wcAAEwIAADcBwAAZAgAALoGAAAoBwAAgAgAALUHAACABwAAtAgAAEAIAAA+BwAAMwcAAEsHAABDBwAAQwgAAPMIAABhBwAACQgAAKkFAADQBQAArgYAAOgGAAB0BwAA2gYAAAMIAACQBgAA8AYAAL0GAAA8BwAA5wcAADkHAACEBgAA+AYAABwHAAD7BwAAYwkAAHEGAAAACAAApAYAANYGAACoBwAADwcAACsHAABnBgAAJwcAAE8HAABmBwAAugYAAH8GAAAwBgAAUAcAAHsHAAAiBwAATAYAACgHAADVCAAANgcAAKEGAAA8BwAATwcAAKQGAABtBwAAGwYAABkGAADKBgAATQcAANkGAAB0BwAAAwgAAPEGAACzBQAAtQYAAAAHAADRBQAAJAYAALQIAADBBwAArQcAAKAGAAB0BgAAnQYAAGEGAABQBgAA2AcAADAHAABFBwAA9wYAAFsJAAAeBwAAGQYAAIkGAAB7BgAAqAcAABMGAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[284],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[284],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1205\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1206\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1201\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1202\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1203\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1218\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1209\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1211\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1210\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\"],\"shape\":[250],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"hgkAAAwJAADZCQAAVgoAAA4LAAAHCgAATAoAAFQKAABRCwAAlQkAACUKAAAQCwAAFQoAALoJAAA7CgAAuAkAAK4JAAArCQAAggkAAHsKAADXCAAAZwoAAMUJAAA4CgAAMwkAAO8JAABNCgAAzAkAAKoJAACkCQAA7goAAB4LAADVCQAAlQkAAOwKAADFCQAArQoAANoJAABfCQAArAoAAIsJAACaCgAAdQsAAJQKAABmCgAAJQoAAOwIAAD3CQAAewoAAIYJAAB7CgAAcgoAAIUKAAD7CQAAxQoAAEALAAAFCgAAQgoAACcKAABhCwAArgoAACIKAAAWCwAANQsAAOwKAAAUCgAA4AgAAOYJAADOCgAADQoAAOMJAAA1CwAA6ggAAEQJAADUCgAA8AoAAHwKAACtCgAA+AoAABAKAAD8CQAA1woAAM4KAACVCQAAfgoAALYKAAByCgAAgAoAAOsJAACFCQAAhgoAAIMLAAAkCQAAcAkAAMYJAACjCQAAYgkAADcKAADgCAAAbgkAAPIKAADgCQAAdwgAABILAAB7CQAAVwoAACEKAADkCAAAdAoAAGAJAAD6CAAAiwkAAAIJAABBCQAAgAkAAB0JAADbCQAA6gkAAGsKAAArCwAAPgsAAIkKAABbCgAA2wkAAKYJAAANCgAA8AkAAF0KAAA8CgAAcQoAACYKAABICgAArAoAAGcKAAClCAAAqwkAAJ4KAAAsCQAAzwoAAEMLAACLCQAA+AgAAFEKAAAsCwAA3AoAAEILAAD7CAAAmgoAALcKAAA5CwAAwwkAANoJAAD5CQAALwkAAJkKAAAGCgAA4goAAIMJAABKCQAA0wkAAF8KAADgCQAA8QkAABwKAADqCQAA0woAAFcLAACgCgAAAwsAADsKAAAvCgAAOgkAAOUJAACgCQAADwoAAHEJAACyCQAAmAkAADoKAAAgCgAAMQsAADoLAACmCgAAlQkAAGELAADjCgAArQoAAHYKAAC7CgAAzwsAALAKAABBCgAAjQoAACcLAABsCgAAHwsAAG8LAAB4CgAA6QoAAFIJAACMCgAAkwsAAEgLAADFCQAAhQkAAIcLAACuCgAA7woAAA0KAACPCgAAGAoAABMKAAA3CwAA0QgAAKkIAABYCAAArAgAAIUIAADuCAAAGgoAAEsJAABTCQAAFQkAAKYIAAA3CQAAfAgAAEIIAABECAAA0ggAALsJAAA7CgAAdgoAAHoKAAD/CQAAMAsAAJEKAACNCgAAqQoAAAsLAACbCgAAKQoAAJkJAAClCQAAzQoAAL4JAABZCwAAMQoAABMKAAAVCQAAVgoAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"gQUAAG8FAADnBQAAtAUAAGYGAAAkBgAAqgUAADcFAACZBgAAnAUAANEFAAB9BgAARQYAAMkFAACSBQAA0wUAACYGAAAABQAAkwUAAMcFAADrBQAAAAYAAAQFAABfBgAASgUAAMcFAAADBgAAgwUAAKEFAAB+BQAAqwUAAHsFAABDBQAA+QQAANgFAABxBAAAbwUAADgFAAC4BAAAtQUAAIcEAAB1BQAAxwUAAD4FAAAxBQAANQUAAJcEAADkBAAAewUAAAMFAACZBQAAfgUAAP0FAAA2BQAAYAYAAH8GAABEBgAAKgUAAHsFAAAuBgAAIQYAAEgGAAAgBgAAEwYAAP8FAABsBQAA6wUAALcFAACVBQAAqQUAAI4FAAC9BQAAJQUAAMcEAAD+BQAAhQUAAKEFAACZBQAADgUAAGIFAADyBAAAjQUAAMQFAAD5BAAApQUAAI4FAACmBQAAlwUAABMFAAAPBQAAnwUAAM4FAAAcBQAAOwUAAE4FAACjBQAAJwUAAKMFAADVBAAAugQAAOsFAADaBQAABQUAANsFAAD0BAAAhwUAAAAFAAA/BQAANgYAAKAFAAAuBQAAawUAAP8EAAAEBQAAxQQAAAQFAAAqBQAAjwUAAI4FAABGBQAAFwYAANkFAAByBQAAmAUAAPsFAADcBAAAcwUAAEsGAACUBQAAVgUAANAFAAAYBgAAtwUAAHoFAACdBQAAKAUAAKkFAAARBQAAQAUAANcFAADLBAAA5AQAAL0FAADlBQAAuAUAAMoFAABwBQAAkgUAAHUGAADjBQAACwUAANoFAACdBQAApQQAAIYFAAAdBQAAdwYAAFgFAAClBAAAlwUAADoFAACqBQAAywQAAC8FAABjBQAAOAYAAAAGAACFBQAAEwYAAKMFAAD0BAAA0QQAACAFAAD1BQAAhgUAAKkFAADsBAAAJgUAAB8FAACCBQAAZgYAAKwFAABnBQAAEgUAANYFAACEBQAAeQUAAAIFAAASBQAAIAYAAGgFAAAXBQAANwUAABsFAACRBQAAsAUAACgFAACbBQAAugUAAB8FAADnBQAA5QUAAEIGAACIBQAAfQUAAOoFAACTBQAAtAUAAHIFAAAvBQAAYwUAABMFAAA2BgAAPQUAANAEAACoBQAAnwUAAAAFAAATBgAA+gUAAIMGAACXBQAAMwUAAPwFAAArBQAAQwUAAOQEAAABBQAAlgUAAGMEAAB9BQAA7wQAAHUFAACkBAAAMQYAABEFAACHBQAAbwUAAKQFAACcBQAAGgUAAD8FAAAFBQAABQYAAEAFAACoBQAAKwUAAB8FAACxBAAASwUAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1219\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1220\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1215\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1216\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1217\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1155\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1180\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1181\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1182\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1183\",\"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\":\"SaveTool\",\"id\":\"p1184\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1185\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1186\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1173\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1174\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1176\"},\"axis_label\":\"norm. YFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1175\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1166\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1167\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1169\"},\"axis_label\":\"norm. CFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1168\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1172\",\"attributes\":{\"axis\":{\"id\":\"p1166\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1179\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1173\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1207\",\"attributes\":{\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1208\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"d22\"},\"renderers\":[{\"id\":\"p1204\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1221\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"m22\"},\"renderers\":[{\"id\":\"p1218\"}]}}]}}],\"frame_width\":300,\"frame_height\":300}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"cd1df815-74db-4b31-9cf4-fa6dd2c8cbf0\",\"roots\":{\"p1149\":\"a9497672-5952-4d98-8a11-8d61b8f669b8\"},\"root_ids\":[\"p1149\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1149" } }, "output_type": "display_data" } ], "source": [ "# Color palette we will use, from colorcet\n", "colors = colorcet.b_glasbey_category10\n", "\n", "# Create the figure, stored in variable `p`\n", "p = bokeh.plotting.figure(\n", " frame_width=300,\n", " frame_height=300,\n", " x_axis_label='norm. CFP intensity',\n", " y_axis_label='norm. YFP intensity',\n", " x_range=[0.65, 1.45],\n", " y_range=[0.65, 1.45],\n", ")\n", "\n", "# Add glyphs\n", "for color, (strain, g) in zip(colors, df.groupby('strain')):\n", " p.circle(source=g, x='norm CFP', y='norm YFP', color=color, legend_label=strain)\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We got the plot we wanted, but we may want to move the legend. Fortunately, Bokeh allows us to set attributes of the figure whenever we like. (We will further discuss styling Bokeh plots in a future lesson.) We can therefore set the legend position to be in the upper left corner. We will also set the `click_policy` for the legend to be `'hide'`, which will hide glyphs if you click the legend, which can be convenient for viewing cluttered plots (though this one is not cluttered, really)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"7e35ebf2-c553-48aa-b54b-9d868635be4a\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1149\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1158\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1160\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1162\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1164\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1157\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1204\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1195\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1197\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1196\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"+gAAAPsAAAD8AAAA/QAAAP4AAAD/AAAAAAEAAAEBAAACAQAAAwEAAAQBAAAFAQAABgEAAAcBAAAIAQAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAABMBAAAUAQAAFQEAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAAMAEAADEBAAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA4AQAAOQEAADoBAAA7AQAAPAEAAD0BAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEkBAABKAQAASwEAAEwBAABNAQAATgEAAE8BAABQAQAAUQEAAFIBAABTAQAAVAEAAFUBAABWAQAAVwEAAFgBAABZAQAAWgEAAFsBAABcAQAAXQEAAF4BAABfAQAAYAEAAGEBAABiAQAAYwEAAGQBAABlAQAAZgEAAGcBAABoAQAAaQEAAGoBAABrAQAAbAEAAG0BAABuAQAAbwEAAHABAABxAQAAcgEAAHMBAAB0AQAAdQEAAHYBAAB3AQAAeAEAAHkBAAB6AQAAewEAAHwBAAB9AQAAfgEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAhwEAAIgBAACJAQAAigEAAIsBAACMAQAAjQEAAI4BAACPAQAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAAmQEAAJoBAACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAAChAQAAogEAAKMBAACkAQAApQEAAKYBAACnAQAAqAEAAKkBAACqAQAAqwEAAKwBAACtAQAArgEAAK8BAACwAQAAsQEAALIBAACzAQAAtAEAALUBAAC2AQAAtwEAALgBAAC5AQAAugEAALsBAAC8AQAAvQEAAL4BAAC/AQAAwAEAAMEBAADCAQAAwwEAAMQBAADFAQAAxgEAAMcBAADIAQAAyQEAAMoBAADLAQAAzAEAAM0BAADOAQAAzwEAANABAADRAQAA0gEAANMBAADUAQAA1QEAANYBAADXAQAA2AEAANkBAADaAQAA2wEAANwBAADdAQAA3gEAAN8BAADgAQAA4QEAAOIBAADjAQAA5AEAAOUBAADmAQAA5wEAAOgBAADpAQAA6gEAAOsBAADsAQAA7QEAAO4BAADvAQAA8AEAAPEBAADyAQAA8wEAAPQBAAD1AQAA9gEAAPcBAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\"],\"shape\":[284],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CAwAAAoMAABNCwAA7QsAAEsLAACyCgAAxgkAAPwKAABrCwAAkgsAAI4MAADXCgAA5gkAAKMKAAATCgAA6woAAJYJAABdCgAAsw0AALYIAAD4CgAA0AkAANMKAAACCQAANgoAAOMKAABcCgAAXQkAAAAKAACtCQAAGgkAAL0IAABSCAAAIAkAAEMJAABqCQAASQgAAHQHAACTBwAAVQkAAFoHAABiBwAAhwoAAI0LAAAzCgAAwAsAAC4KAACOCwAAAQsAAPQKAAB0CwAAwgwAAPsKAABZCgAAnAwAAKAKAADYCQAAaA0AAPwMAACHDAAAVAwAAKALAABFDAAADQwAAIoLAADmCwAA/AkAAOkLAAA0DAAAvQoAAMILAABtCwAAcgsAAAoNAACVDAAAegsAAJELAABiCwAAUgoAAC8KAADUCQAAigoAABMMAAApCgAAlQkAAOYKAABrCgAA4AkAALsJAABCCgAAEAsAAD0JAADUCgAAwwkAAJgJAAAZCwAAnQsAAG4LAABVCAAA4wgAAK8IAAAiCgAAGgsAAFwLAABTCgAArAkAAO0JAADGCAAATQoAACAKAADHCgAAFgsAAOwJAAAaCgAABAsAAGUJAADPCQAAswsAAPkIAACnCwAAggoAAMsIAAAbCgAAlAgAAEQKAABYCAAAMgoAAFsHAADPCwAA6gkAAPkJAADACgAASgoAAEgLAAD9CQAAyQkAAKEKAABICAAA7goAAPkIAACpCwAAxAsAAOEKAAAXCgAA9goAAJ8JAACpCgAASwsAAK4KAABCCgAA4goAABgKAACcCQAAMwsAAPkLAABRCwAAMAsAACcLAACFCwAAAwsAACYKAAARCgAAnAoAADgJAAASCgAAhAwAAJUJAACKCgAAFgsAAIILAABMBwAA3wkAAOQLAAACCgAAJwkAAMsJAACPCAAATAoAAPUIAADWBwAANwoAAAoKAAA9CgAAAQoAALIJAABOCgAAewoAAD4JAADpCQAArAkAAAkMAAANCwAAiw0AACgKAAD3CQAADwoAALsMAAB8CwAAaQoAADILAACFCgAAwQkAAJELAAATDAAADQ0AAD0LAABJCwAA9QwAAD0JAAD2CgAAGAoAAC0KAAAyCwAAIAoAAO8KAAAVCgAAOgoAANIKAABlCgAA4wgAAJUKAAClCQAAkgoAAH8KAABnCAAAmggAAJEJAACHCwAAPgsAAIEKAAB/CgAANwkAALYKAABMCwAACgsAAEAKAAD+CQAAjgoAAN8JAADrCQAAWwsAAJkLAAD0CgAApwoAAKcKAABuDgAAFwsAAN8JAAC8CQAAigoAAPwKAACdCgAALgoAACsKAAChCgAA7goAAAwKAAABDAAAdgoAACgKAAAeCQAAfgkAABQIAAAxCQAAWgoAAFcNAAD2CQAAtgkAAGoIAAACCQAAPggAACEJAACbCAAA9AkAAFIKAAABCgAAMwkAADkJAADGCQAAyQgAAMEIAAApCQAA2AoAAEIIAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BQkAAFoJAABhCAAAJAkAAMUIAACsBwAADgcAACoIAAABBwAAqAgAAHoIAABQCAAA9QYAANkHAABzBgAAKAgAAFoHAADEBgAAOQgAACoIAADGBwAAQAcAACQHAAAiBgAAcggAAJsIAABOBwAAPQcAAM8HAADOBwAAjgYAAA4HAAAcBwAAjgcAAHQHAACcBwAAMAYAAOIFAAD3BQAAHQcAACkHAADCBQAArggAAEMJAACGBwAAawgAAMoGAAARBwAAOQgAAIoHAACKBgAAJwkAACcIAADRBgAAUwkAAAYIAAAZBwAA9AcAALQHAACWCAAAwQgAAGAIAABmBgAAcggAAI8JAAB3BwAAQAcAAOAIAADwCAAA1wcAAM4IAACaCAAAZggAAKoIAAAGBwAAjAcAANgIAABnBwAAQAYAAEYHAABwBwAAzAYAAIUJAAAhBwAAMQYAAFUHAAAIBgAAJwcAAOAIAAC7BwAAEwgAAF0HAADJBwAA4QYAAHgIAADWBwAAWggAALQHAACHBgAA1QYAADEGAADcBQAAXggAACYIAAD1BwAAkAYAAC4HAAAkBgAA8QYAAJMHAADrBwAAgQcAAAMIAADYBwAAMggAAK4HAADFBgAAsgYAAA0HAACQBwAATQcAACsHAAARCAAAUAkAADkHAADoBQAAEAgAAKsGAAC+CAAAugYAAAQHAAD7BgAAkAcAAOcHAAAJBwAA8gYAAKEHAABLCAAAFAcAAGUGAABsCAAAGwcAAEcHAAClBwAArgcAAJIHAABaBgAAkAcAANAHAADYBwAANwcAAPgGAABlBgAAhwcAAAMIAAC9BwAAzwYAAL8HAABDBwAAWgcAAAYHAADDBwAACgcAAK0GAAD9BQAAuggAAO4HAADnBwAANAkAAHcGAAAcBgAAFwcAAC4HAAAyBwAAKwgAANsGAABnBgAAhQcAAL8GAACyCAAAWAcAAM0GAACOBgAAywYAAIUGAACWBwAAtQcAAGAHAADjBgAA4wcAAEwIAADcBwAAZAgAALoGAAAoBwAAgAgAALUHAACABwAAtAgAAEAIAAA+BwAAMwcAAEsHAABDBwAAQwgAAPMIAABhBwAACQgAAKkFAADQBQAArgYAAOgGAAB0BwAA2gYAAAMIAACQBgAA8AYAAL0GAAA8BwAA5wcAADkHAACEBgAA+AYAABwHAAD7BwAAYwkAAHEGAAAACAAApAYAANYGAACoBwAADwcAACsHAABnBgAAJwcAAE8HAABmBwAAugYAAH8GAAAwBgAAUAcAAHsHAAAiBwAATAYAACgHAADVCAAANgcAAKEGAAA8BwAATwcAAKQGAABtBwAAGwYAABkGAADKBgAATQcAANkGAAB0BwAAAwgAAPEGAACzBQAAtQYAAAAHAADRBQAAJAYAALQIAADBBwAArQcAAKAGAAB0BgAAnQYAAGEGAABQBgAA2AcAADAHAABFBwAA9wYAAFsJAAAeBwAAGQYAAIkGAAB7BgAAqAcAABMGAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"NjuRnY148j8NxyOpn3vyPxMoi2N2WfE/W9tWARpP8j87nPhXZFbxP2TSreJ/a/A/TLpCGl0C7j+DCNyOG93wP7BZIRGFh/E/lwDL8mTD8T+P1OukRkbzP3PtxLhNpPA/NjWUjJ5k7j+VueKLeFTwPw/KVpXK7u4/3WN+LALD8D/tgcju+m7tP0s2s+0B0u8/RttIRBoI9T+IJY7OML/qP9Twtnf31vA/tTD8jREh7j/F1Z+hKZ7wP3SpDz6MqOs/fuhfKkJa7z9/NDT+ubbwP3SqIOLvzu8//V4nW/a/7D8UaXa5c7TuP0US8/iZte0/o8XMUz3y6z9r+I8fr9TqP22FT0kkjOk/rww8makE7D8fK0UuIXDsP+x4mPHg5+w/3Joo4YFw6T+3QDpAfuLmP8ov+aatQec/QgCT/mWn7D/ZDFgTqZLmP5Rr7G85q+Y/zxPf6Xsp8D/8otzVt7vxP/hEqAcMUe8/75D1/AMK8j/EicvNsUHvP+jopdtAvfE/HWbKq8jk8D8l2ZFg09DwP/nONEVWlfE/bQjO0RuW8z+XwhKJktvwP+4Gab+5xe8/c6ft9cRb8z/S54Z63U/wP2+PkOqhOe4/PF9RkvWU9D/R32chJ+/zPx7ranyHO/M/LP1RVTvt8j9608xD49jxP13khv4z1vI/0Jh/ujqA8j850YDEHLfxP+rx1dhaRPI/tzksiyuo7j+twzHq9UjyP7c/KZwavPI/hNNTImN88D/GHIgIFg3yP4jlsxyXivE/IkOiOUSS8T+1smlypQT0PwG+bM0FUfM/f3LsZ4ye8T+rugHt28HxP2fkDd2zefE/CzRnbjuw7z+bFV7Zw0TvPxJgRrxZLe4/kuU6+xYu8D9WPDfdcInyP4/O7pNXMu8/FvY14+hr7T9CBpAPVbvwPxLcto/+/O8/Ku4kRzJS7j8MuPaaluDtP5Z2PrUaf+8/7H6VAtD78D8T5NXotF3sP7Abaaeyn/A/xhaL9yb57T+cme0FH3XtPzX0qDahCfE/twFxMkjU8T9zK30iIIzxP/MoB2xalek/YbpQ11xJ6z+lUox9sqnqP6z77ELZHO8/IDpyPCoL8T/hQFa6fXDxP+K/+XlNs+8/boZg7Yey7T8ZCJbdHHruP/3itodR8Oo/1niKNOGg7z/+48crtRbvP7mOMFy9i/A/ciJNJQYF8T9CfAPSCnfuP/KcWOZIBO8/4DcmvWPp8D+3vbu3htjsP96kaYL/He4/9wO9sQ728T/ivujV6YzrP+u8TWyi4/E/NbbwzM4h8D8ynpPBq//qP8ko6/FaB+8/8JIXRctW6j9FjmPMPoXvP3nMvo6Qnuk/IbkV/PlN7z+wmOoeu5XmP76pwFMLIfI/k2TeuuZw7j8xlnRo9Z7uP0elrzP+gPA/UdXSEauX7z94ypxGyVHxP47FvpY9q+4/0l36PJML7j++LVCAZlHwPwQPltVvbek/nzXaPZ3H8D/ivujV6YzrP8NI4He05vE/nagaFCgQ8j+oqKHyp7PwP2z5oMMS++4//WQkbOXT8D9/bO9WnYrtPxtdmq6uXfA/O5z4V2RW8T+2uojLW2XwP5Z2PrUaf+8/lO5q+DC18D9DhTPPJP7uP/nINzRnge0/JA4azYsx8T9nIsZGhmHyP8E/sHqaX/E/YTy+u/As8T8Yx6qHHx/xP59zkqdvr/E/9PFct9rn8D8JKzdxISnvP2CyMX6m6O4/JNBhY7lJ8D/eKPmuWk7sPzc+xIm46+4/WxkPa+w28z8W9jXj6GvtP5LlOvsWLvA/ciJNJQYF8T/coTaW1KrxPxNnVHGsZ+Y/U2KSOyBP7j8SZkPNSEHyP8KAm9CXuu4/kt896ica7D+AdR9UtxHuP7vXOgtxR+o//+z3KM+d7z+Fj56noYDrPyPJU65mD+g/VnTyNVRd7z993y8tKNPuP2K7YXvAb+8/6/QIxYW37j96zc8y9MTtP64EHUDzo+8/w8xvpA8X8D/qb2j0xmDsP7zYS6/Ube4/boZg7Yey7T8igVqjFnryPymtOfE09/A/dO7VXLHK9D+4QlyIRS/vP4J+T1HRmO4/sZoMZ4Li7j/8Hk2pXIvzP1b+fnOeofE/Y8SReNr27z84yFDHAjDxP/iHTN5pJvA/F/9l4ALz7T+rugHt28HxP1Y8N91wifI/eITFg0AJ9D9YyfYG5kDxP2QQZkxSU/E/YPbm+Gfk8z8T5NXotF3sP/1kJGzl0/A/Q4UzzyT+7j/t/TjCnz7vPzjIUMcCMPE//uPHK7UW7z+Le6NDJsnwP73he6zu9O4/3BeqWIpm7z/Zj9aboJzwPwaVR0qS6u8/YbpQ11xJ6z+y5uA6+j7wP4uzXpwJne0/7xSFKV868D9y5JS7Mx3wPxf+VDyfzOk//NmGijdp6j+5xuu0oF/tP3f/JLOBsvE/RA/ADG9C8T9JcCfHRSDwP3LklLszHfA/B51mo0hL7D8T6tL5o3HwPyfiwV3tV/E/Ztvd35ny8D/nXhme9njvP2VRUaJPru4/Qf1fEjs08D9TYpI7IE/uP2rwcMb4c+4/9vqMtPRu8T8I6ksbJM7xPyXZkWDT0PA/RNEHo5xa8D9E0QejnFrwP2nuTn4xJ/Y/XWgWK48G8T9TYpI7IE/uP+NDiaao4+0/kuU6+xYu8D+DCNyOG93wPxAWK2lCS/A/xInLzbFB7z8+5hOrezjvP74tUIBmUfA/nzXaPZ3H8D8r91RETNnuP8RREHXObfI/KW+Bh2IP8D+4QlyIRS/vPwD1FoKF/us/vmUL2Ukl7T9Ip9F7xc3oP/tV913cOOw/xZL7ysvI7z+WuvMv3Hr0P6vyvEW/le4/1/wZYTzR7T+doQxf1dXpP3SpDz6MqOs/m5jcYbtO6T+GmM6kuwfsP9NlGZZJbOo//NqXLpuP7j8LNGduO7DvP+v0CMWFt+4/qm0cdQA/7D+1tIu6bFHsP0y6QhpdAu4/g4Zuqof56j/JJ9pN9+DqP0H3YgFMIOw/XzOOvtal8D/4xyaQA1vpPw==\"},\"shape\":[284],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[284],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1205\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1206\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1201\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1202\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1203\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1218\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1209\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1211\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1210\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\"],\"shape\":[250],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"hgkAAAwJAADZCQAAVgoAAA4LAAAHCgAATAoAAFQKAABRCwAAlQkAACUKAAAQCwAAFQoAALoJAAA7CgAAuAkAAK4JAAArCQAAggkAAHsKAADXCAAAZwoAAMUJAAA4CgAAMwkAAO8JAABNCgAAzAkAAKoJAACkCQAA7goAAB4LAADVCQAAlQkAAOwKAADFCQAArQoAANoJAABfCQAArAoAAIsJAACaCgAAdQsAAJQKAABmCgAAJQoAAOwIAAD3CQAAewoAAIYJAAB7CgAAcgoAAIUKAAD7CQAAxQoAAEALAAAFCgAAQgoAACcKAABhCwAArgoAACIKAAAWCwAANQsAAOwKAAAUCgAA4AgAAOYJAADOCgAADQoAAOMJAAA1CwAA6ggAAEQJAADUCgAA8AoAAHwKAACtCgAA+AoAABAKAAD8CQAA1woAAM4KAACVCQAAfgoAALYKAAByCgAAgAoAAOsJAACFCQAAhgoAAIMLAAAkCQAAcAkAAMYJAACjCQAAYgkAADcKAADgCAAAbgkAAPIKAADgCQAAdwgAABILAAB7CQAAVwoAACEKAADkCAAAdAoAAGAJAAD6CAAAiwkAAAIJAABBCQAAgAkAAB0JAADbCQAA6gkAAGsKAAArCwAAPgsAAIkKAABbCgAA2wkAAKYJAAANCgAA8AkAAF0KAAA8CgAAcQoAACYKAABICgAArAoAAGcKAAClCAAAqwkAAJ4KAAAsCQAAzwoAAEMLAACLCQAA+AgAAFEKAAAsCwAA3AoAAEILAAD7CAAAmgoAALcKAAA5CwAAwwkAANoJAAD5CQAALwkAAJkKAAAGCgAA4goAAIMJAABKCQAA0wkAAF8KAADgCQAA8QkAABwKAADqCQAA0woAAFcLAACgCgAAAwsAADsKAAAvCgAAOgkAAOUJAACgCQAADwoAAHEJAACyCQAAmAkAADoKAAAgCgAAMQsAADoLAACmCgAAlQkAAGELAADjCgAArQoAAHYKAAC7CgAAzwsAALAKAABBCgAAjQoAACcLAABsCgAAHwsAAG8LAAB4CgAA6QoAAFIJAACMCgAAkwsAAEgLAADFCQAAhQkAAIcLAACuCgAA7woAAA0KAACPCgAAGAoAABMKAAA3CwAA0QgAAKkIAABYCAAArAgAAIUIAADuCAAAGgoAAEsJAABTCQAAFQkAAKYIAAA3CQAAfAgAAEIIAABECAAA0ggAALsJAAA7CgAAdgoAAHoKAAD/CQAAMAsAAJEKAACNCgAAqQoAAAsLAACbCgAAKQoAAJkJAAClCQAAzQoAAL4JAABZCwAAMQoAABMKAAAVCQAAVgoAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"gQUAAG8FAADnBQAAtAUAAGYGAAAkBgAAqgUAADcFAACZBgAAnAUAANEFAAB9BgAARQYAAMkFAACSBQAA0wUAACYGAAAABQAAkwUAAMcFAADrBQAAAAYAAAQFAABfBgAASgUAAMcFAAADBgAAgwUAAKEFAAB+BQAAqwUAAHsFAABDBQAA+QQAANgFAABxBAAAbwUAADgFAAC4BAAAtQUAAIcEAAB1BQAAxwUAAD4FAAAxBQAANQUAAJcEAADkBAAAewUAAAMFAACZBQAAfgUAAP0FAAA2BQAAYAYAAH8GAABEBgAAKgUAAHsFAAAuBgAAIQYAAEgGAAAgBgAAEwYAAP8FAABsBQAA6wUAALcFAACVBQAAqQUAAI4FAAC9BQAAJQUAAMcEAAD+BQAAhQUAAKEFAACZBQAADgUAAGIFAADyBAAAjQUAAMQFAAD5BAAApQUAAI4FAACmBQAAlwUAABMFAAAPBQAAnwUAAM4FAAAcBQAAOwUAAE4FAACjBQAAJwUAAKMFAADVBAAAugQAAOsFAADaBQAABQUAANsFAAD0BAAAhwUAAAAFAAA/BQAANgYAAKAFAAAuBQAAawUAAP8EAAAEBQAAxQQAAAQFAAAqBQAAjwUAAI4FAABGBQAAFwYAANkFAAByBQAAmAUAAPsFAADcBAAAcwUAAEsGAACUBQAAVgUAANAFAAAYBgAAtwUAAHoFAACdBQAAKAUAAKkFAAARBQAAQAUAANcFAADLBAAA5AQAAL0FAADlBQAAuAUAAMoFAABwBQAAkgUAAHUGAADjBQAACwUAANoFAACdBQAApQQAAIYFAAAdBQAAdwYAAFgFAAClBAAAlwUAADoFAACqBQAAywQAAC8FAABjBQAAOAYAAAAGAACFBQAAEwYAAKMFAAD0BAAA0QQAACAFAAD1BQAAhgUAAKkFAADsBAAAJgUAAB8FAACCBQAAZgYAAKwFAABnBQAAEgUAANYFAACEBQAAeQUAAAIFAAASBQAAIAYAAGgFAAAXBQAANwUAABsFAACRBQAAsAUAACgFAACbBQAAugUAAB8FAADnBQAA5QUAAEIGAACIBQAAfQUAAOoFAACTBQAAtAUAAHIFAAAvBQAAYwUAABMFAAA2BgAAPQUAANAEAACoBQAAnwUAAAAFAAATBgAA+gUAAIMGAACXBQAAMwUAAPwFAAArBQAAQwUAAOQEAAABBQAAlgUAAGMEAAB9BQAA7wQAAHUFAACkBAAAMQYAABEFAACHBQAAbwUAAKQFAACcBQAAGgUAAD8FAAAFBQAABQYAAEAFAACoBQAAKwUAAB8FAACxBAAASwUAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1219\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1220\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1215\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1216\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1217\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1155\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1180\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1181\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1182\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1183\",\"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\":\"SaveTool\",\"id\":\"p1184\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1185\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1186\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1173\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1174\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1176\"},\"axis_label\":\"norm. YFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1175\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1166\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1167\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1169\"},\"axis_label\":\"norm. CFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1168\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1172\",\"attributes\":{\"axis\":{\"id\":\"p1166\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1179\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1173\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1207\",\"attributes\":{\"location\":\"bottom_right\",\"click_policy\":\"hide\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1208\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"d22\"},\"renderers\":[{\"id\":\"p1204\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1221\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"m22\"},\"renderers\":[{\"id\":\"p1218\"}]}}]}}],\"frame_width\":300,\"frame_height\":300}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"7e35ebf2-c553-48aa-b54b-9d868635be4a\",\"roots\":{\"p1149\":\"8fda1c95-ab51-4bfb-95aa-54ae35b81260\"},\"root_ids\":[\"p1149\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1149" } }, "output_type": "display_data" } ], "source": [ "p.legend.location = 'bottom_right'\n", "p.legend.click_policy = 'hide'\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Saving Bokeh plots\n", "\n", "After you create your plot, you can save it to a variety of formats. Most commonly you would save them as PNG (for presentations), SVG (for publications in the paper of the past), and HTML (for interactivity or sharing with colleagues). \n", "\n", "To save as a PNG for quick use, you can click the download icon in the tool bar. \n", "\n", "To save to SVG, you first change the output backend to `'svg'` and then you can click the download icon again, and you will get an SVG rendering of the plot. After saving the SVG, you should change the output backend back to `'canvas'` because it has much better in-browser performance." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"3c9ddf30-18e5-4873-b993-6243f0280e7a\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1149\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1158\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"y_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1160\",\"attributes\":{\"start\":0.65,\"end\":1.45}},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1162\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1164\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1157\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1204\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1195\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1197\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1196\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"+gAAAPsAAAD8AAAA/QAAAP4AAAD/AAAAAAEAAAEBAAACAQAAAwEAAAQBAAAFAQAABgEAAAcBAAAIAQAACQEAAAoBAAALAQAADAEAAA0BAAAOAQAADwEAABABAAARAQAAEgEAABMBAAAUAQAAFQEAABYBAAAXAQAAGAEAABkBAAAaAQAAGwEAABwBAAAdAQAAHgEAAB8BAAAgAQAAIQEAACIBAAAjAQAAJAEAACUBAAAmAQAAJwEAACgBAAApAQAAKgEAACsBAAAsAQAALQEAAC4BAAAvAQAAMAEAADEBAAAyAQAAMwEAADQBAAA1AQAANgEAADcBAAA4AQAAOQEAADoBAAA7AQAAPAEAAD0BAAA+AQAAPwEAAEABAABBAQAAQgEAAEMBAABEAQAARQEAAEYBAABHAQAASAEAAEkBAABKAQAASwEAAEwBAABNAQAATgEAAE8BAABQAQAAUQEAAFIBAABTAQAAVAEAAFUBAABWAQAAVwEAAFgBAABZAQAAWgEAAFsBAABcAQAAXQEAAF4BAABfAQAAYAEAAGEBAABiAQAAYwEAAGQBAABlAQAAZgEAAGcBAABoAQAAaQEAAGoBAABrAQAAbAEAAG0BAABuAQAAbwEAAHABAABxAQAAcgEAAHMBAAB0AQAAdQEAAHYBAAB3AQAAeAEAAHkBAAB6AQAAewEAAHwBAAB9AQAAfgEAAH8BAACAAQAAgQEAAIIBAACDAQAAhAEAAIUBAACGAQAAhwEAAIgBAACJAQAAigEAAIsBAACMAQAAjQEAAI4BAACPAQAAkAEAAJEBAACSAQAAkwEAAJQBAACVAQAAlgEAAJcBAACYAQAAmQEAAJoBAACbAQAAnAEAAJ0BAACeAQAAnwEAAKABAAChAQAAogEAAKMBAACkAQAApQEAAKYBAACnAQAAqAEAAKkBAACqAQAAqwEAAKwBAACtAQAArgEAAK8BAACwAQAAsQEAALIBAACzAQAAtAEAALUBAAC2AQAAtwEAALgBAAC5AQAAugEAALsBAAC8AQAAvQEAAL4BAAC/AQAAwAEAAMEBAADCAQAAwwEAAMQBAADFAQAAxgEAAMcBAADIAQAAyQEAAMoBAADLAQAAzAEAAM0BAADOAQAAzwEAANABAADRAQAA0gEAANMBAADUAQAA1QEAANYBAADXAQAA2AEAANkBAADaAQAA2wEAANwBAADdAQAA3gEAAN8BAADgAQAA4QEAAOIBAADjAQAA5AEAAOUBAADmAQAA5wEAAOgBAADpAQAA6gEAAOsBAADsAQAA7QEAAO4BAADvAQAA8AEAAPEBAADyAQAA8wEAAPQBAAD1AQAA9gEAAPcBAAD4AQAA+QEAAPoBAAD7AQAA/AEAAP0BAAD+AQAA/wEAAAACAAABAgAAAgIAAAMCAAAEAgAABQIAAAYCAAAHAgAACAIAAAkCAAAKAgAACwIAAAwCAAANAgAADgIAAA8CAAAQAgAAEQIAABICAAATAgAAFAIAABUCAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\",\"d22\"],\"shape\":[284],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"CAwAAAoMAABNCwAA7QsAAEsLAACyCgAAxgkAAPwKAABrCwAAkgsAAI4MAADXCgAA5gkAAKMKAAATCgAA6woAAJYJAABdCgAAsw0AALYIAAD4CgAA0AkAANMKAAACCQAANgoAAOMKAABcCgAAXQkAAAAKAACtCQAAGgkAAL0IAABSCAAAIAkAAEMJAABqCQAASQgAAHQHAACTBwAAVQkAAFoHAABiBwAAhwoAAI0LAAAzCgAAwAsAAC4KAACOCwAAAQsAAPQKAAB0CwAAwgwAAPsKAABZCgAAnAwAAKAKAADYCQAAaA0AAPwMAACHDAAAVAwAAKALAABFDAAADQwAAIoLAADmCwAA/AkAAOkLAAA0DAAAvQoAAMILAABtCwAAcgsAAAoNAACVDAAAegsAAJELAABiCwAAUgoAAC8KAADUCQAAigoAABMMAAApCgAAlQkAAOYKAABrCgAA4AkAALsJAABCCgAAEAsAAD0JAADUCgAAwwkAAJgJAAAZCwAAnQsAAG4LAABVCAAA4wgAAK8IAAAiCgAAGgsAAFwLAABTCgAArAkAAO0JAADGCAAATQoAACAKAADHCgAAFgsAAOwJAAAaCgAABAsAAGUJAADPCQAAswsAAPkIAACnCwAAggoAAMsIAAAbCgAAlAgAAEQKAABYCAAAMgoAAFsHAADPCwAA6gkAAPkJAADACgAASgoAAEgLAAD9CQAAyQkAAKEKAABICAAA7goAAPkIAACpCwAAxAsAAOEKAAAXCgAA9goAAJ8JAACpCgAASwsAAK4KAABCCgAA4goAABgKAACcCQAAMwsAAPkLAABRCwAAMAsAACcLAACFCwAAAwsAACYKAAARCgAAnAoAADgJAAASCgAAhAwAAJUJAACKCgAAFgsAAIILAABMBwAA3wkAAOQLAAACCgAAJwkAAMsJAACPCAAATAoAAPUIAADWBwAANwoAAAoKAAA9CgAAAQoAALIJAABOCgAAewoAAD4JAADpCQAArAkAAAkMAAANCwAAiw0AACgKAAD3CQAADwoAALsMAAB8CwAAaQoAADILAACFCgAAwQkAAJELAAATDAAADQ0AAD0LAABJCwAA9QwAAD0JAAD2CgAAGAoAAC0KAAAyCwAAIAoAAO8KAAAVCgAAOgoAANIKAABlCgAA4wgAAJUKAAClCQAAkgoAAH8KAABnCAAAmggAAJEJAACHCwAAPgsAAIEKAAB/CgAANwkAALYKAABMCwAACgsAAEAKAAD+CQAAjgoAAN8JAADrCQAAWwsAAJkLAAD0CgAApwoAAKcKAABuDgAAFwsAAN8JAAC8CQAAigoAAPwKAACdCgAALgoAACsKAAChCgAA7goAAAwKAAABDAAAdgoAACgKAAAeCQAAfgkAABQIAAAxCQAAWgoAAFcNAAD2CQAAtgkAAGoIAAACCQAAPggAACEJAACbCAAA9AkAAFIKAAABCgAAMwkAADkJAADGCQAAyQgAAMEIAAApCQAA2AoAAEIIAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"BQkAAFoJAABhCAAAJAkAAMUIAACsBwAADgcAACoIAAABBwAAqAgAAHoIAABQCAAA9QYAANkHAABzBgAAKAgAAFoHAADEBgAAOQgAACoIAADGBwAAQAcAACQHAAAiBgAAcggAAJsIAABOBwAAPQcAAM8HAADOBwAAjgYAAA4HAAAcBwAAjgcAAHQHAACcBwAAMAYAAOIFAAD3BQAAHQcAACkHAADCBQAArggAAEMJAACGBwAAawgAAMoGAAARBwAAOQgAAIoHAACKBgAAJwkAACcIAADRBgAAUwkAAAYIAAAZBwAA9AcAALQHAACWCAAAwQgAAGAIAABmBgAAcggAAI8JAAB3BwAAQAcAAOAIAADwCAAA1wcAAM4IAACaCAAAZggAAKoIAAAGBwAAjAcAANgIAABnBwAAQAYAAEYHAABwBwAAzAYAAIUJAAAhBwAAMQYAAFUHAAAIBgAAJwcAAOAIAAC7BwAAEwgAAF0HAADJBwAA4QYAAHgIAADWBwAAWggAALQHAACHBgAA1QYAADEGAADcBQAAXggAACYIAAD1BwAAkAYAAC4HAAAkBgAA8QYAAJMHAADrBwAAgQcAAAMIAADYBwAAMggAAK4HAADFBgAAsgYAAA0HAACQBwAATQcAACsHAAARCAAAUAkAADkHAADoBQAAEAgAAKsGAAC+CAAAugYAAAQHAAD7BgAAkAcAAOcHAAAJBwAA8gYAAKEHAABLCAAAFAcAAGUGAABsCAAAGwcAAEcHAAClBwAArgcAAJIHAABaBgAAkAcAANAHAADYBwAANwcAAPgGAABlBgAAhwcAAAMIAAC9BwAAzwYAAL8HAABDBwAAWgcAAAYHAADDBwAACgcAAK0GAAD9BQAAuggAAO4HAADnBwAANAkAAHcGAAAcBgAAFwcAAC4HAAAyBwAAKwgAANsGAABnBgAAhQcAAL8GAACyCAAAWAcAAM0GAACOBgAAywYAAIUGAACWBwAAtQcAAGAHAADjBgAA4wcAAEwIAADcBwAAZAgAALoGAAAoBwAAgAgAALUHAACABwAAtAgAAEAIAAA+BwAAMwcAAEsHAABDBwAAQwgAAPMIAABhBwAACQgAAKkFAADQBQAArgYAAOgGAAB0BwAA2gYAAAMIAACQBgAA8AYAAL0GAAA8BwAA5wcAADkHAACEBgAA+AYAABwHAAD7BwAAYwkAAHEGAAAACAAApAYAANYGAACoBwAADwcAACsHAABnBgAAJwcAAE8HAABmBwAAugYAAH8GAAAwBgAAUAcAAHsHAAAiBwAATAYAACgHAADVCAAANgcAAKEGAAA8BwAATwcAAKQGAABtBwAAGwYAABkGAADKBgAATQcAANkGAAB0BwAAAwgAAPEGAACzBQAAtQYAAAAHAADRBQAAJAYAALQIAADBBwAArQcAAKAGAAB0BgAAnQYAAGEGAABQBgAA2AcAADAHAABFBwAA9wYAAFsJAAAeBwAAGQYAAIkGAAB7BgAAqAcAABMGAAA=\"},\"shape\":[284],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[284],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[284],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1205\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1206\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1201\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1202\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1203\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#1f77b3\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1218\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1209\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1211\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1210\"},\"data\":{\"type\":\"map\",\"entries\":[[\"index\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"AAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAJAAAACUAAAAmAAAAJwAAACgAAAApAAAAKgAAACsAAAAsAAAALQAAAC4AAAAvAAAAMAAAADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADoAAAA7AAAAPAAAAD0AAAA+AAAAPwAAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAAEYAAABHAAAASAAAAEkAAABKAAAASwAAAEwAAABNAAAATgAAAE8AAABQAAAAUQAAAFIAAABTAAAAVAAAAFUAAABWAAAAVwAAAFgAAABZAAAAWgAAAFsAAABcAAAAXQAAAF4AAABfAAAAYAAAAGEAAABiAAAAYwAAAGQAAABlAAAAZgAAAGcAAABoAAAAaQAAAGoAAABrAAAAbAAAAG0AAABuAAAAbwAAAHAAAABxAAAAcgAAAHMAAAB0AAAAdQAAAHYAAAB3AAAAeAAAAHkAAAB6AAAAewAAAHwAAAB9AAAAfgAAAH8AAACAAAAAgQAAAIIAAACDAAAAhAAAAIUAAACGAAAAhwAAAIgAAACJAAAAigAAAIsAAACMAAAAjQAAAI4AAACPAAAAkAAAAJEAAACSAAAAkwAAAJQAAACVAAAAlgAAAJcAAACYAAAAmQAAAJoAAACbAAAAnAAAAJ0AAACeAAAAnwAAAKAAAAChAAAAogAAAKMAAACkAAAApQAAAKYAAACnAAAAqAAAAKkAAACqAAAAqwAAAKwAAACtAAAArgAAAK8AAACwAAAAsQAAALIAAACzAAAAtAAAALUAAAC2AAAAtwAAALgAAAC5AAAAugAAALsAAAC8AAAAvQAAAL4AAAC/AAAAwAAAAMEAAADCAAAAwwAAAMQAAADFAAAAxgAAAMcAAADIAAAAyQAAAMoAAADLAAAAzAAAAM0AAADOAAAAzwAAANAAAADRAAAA0gAAANMAAADUAAAA1QAAANYAAADXAAAA2AAAANkAAADaAAAA2wAAANwAAADdAAAA3gAAAN8AAADgAAAA4QAAAOIAAADjAAAA5AAAAOUAAADmAAAA5wAAAOgAAADpAAAA6gAAAOsAAADsAAAA7QAAAO4AAADvAAAA8AAAAPEAAADyAAAA8wAAAPQAAAD1AAAA9gAAAPcAAAD4AAAA+QAAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"strain\",{\"type\":\"ndarray\",\"array\":[\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\",\"m22\"],\"shape\":[250],\"dtype\":\"object\",\"order\":\"little\"}],[\"CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"hgkAAAwJAADZCQAAVgoAAA4LAAAHCgAATAoAAFQKAABRCwAAlQkAACUKAAAQCwAAFQoAALoJAAA7CgAAuAkAAK4JAAArCQAAggkAAHsKAADXCAAAZwoAAMUJAAA4CgAAMwkAAO8JAABNCgAAzAkAAKoJAACkCQAA7goAAB4LAADVCQAAlQkAAOwKAADFCQAArQoAANoJAABfCQAArAoAAIsJAACaCgAAdQsAAJQKAABmCgAAJQoAAOwIAAD3CQAAewoAAIYJAAB7CgAAcgoAAIUKAAD7CQAAxQoAAEALAAAFCgAAQgoAACcKAABhCwAArgoAACIKAAAWCwAANQsAAOwKAAAUCgAA4AgAAOYJAADOCgAADQoAAOMJAAA1CwAA6ggAAEQJAADUCgAA8AoAAHwKAACtCgAA+AoAABAKAAD8CQAA1woAAM4KAACVCQAAfgoAALYKAAByCgAAgAoAAOsJAACFCQAAhgoAAIMLAAAkCQAAcAkAAMYJAACjCQAAYgkAADcKAADgCAAAbgkAAPIKAADgCQAAdwgAABILAAB7CQAAVwoAACEKAADkCAAAdAoAAGAJAAD6CAAAiwkAAAIJAABBCQAAgAkAAB0JAADbCQAA6gkAAGsKAAArCwAAPgsAAIkKAABbCgAA2wkAAKYJAAANCgAA8AkAAF0KAAA8CgAAcQoAACYKAABICgAArAoAAGcKAAClCAAAqwkAAJ4KAAAsCQAAzwoAAEMLAACLCQAA+AgAAFEKAAAsCwAA3AoAAEILAAD7CAAAmgoAALcKAAA5CwAAwwkAANoJAAD5CQAALwkAAJkKAAAGCgAA4goAAIMJAABKCQAA0wkAAF8KAADgCQAA8QkAABwKAADqCQAA0woAAFcLAACgCgAAAwsAADsKAAAvCgAAOgkAAOUJAACgCQAADwoAAHEJAACyCQAAmAkAADoKAAAgCgAAMQsAADoLAACmCgAAlQkAAGELAADjCgAArQoAAHYKAAC7CgAAzwsAALAKAABBCgAAjQoAACcLAABsCgAAHwsAAG8LAAB4CgAA6QoAAFIJAACMCgAAkwsAAEgLAADFCQAAhQkAAIcLAACuCgAA7woAAA0KAACPCgAAGAoAABMKAAA3CwAA0QgAAKkIAABYCAAArAgAAIUIAADuCAAAGgoAAEsJAABTCQAAFQkAAKYIAAA3CQAAfAgAAEIIAABECAAA0ggAALsJAAA7CgAAdgoAAHoKAAD/CQAAMAsAAJEKAACNCgAAqQoAAAsLAACbCgAAKQoAAJkJAAClCQAAzQoAAL4JAABZCwAAMQoAABMKAAAVCQAAVgoAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"gQUAAG8FAADnBQAAtAUAAGYGAAAkBgAAqgUAADcFAACZBgAAnAUAANEFAAB9BgAARQYAAMkFAACSBQAA0wUAACYGAAAABQAAkwUAAMcFAADrBQAAAAYAAAQFAABfBgAASgUAAMcFAAADBgAAgwUAAKEFAAB+BQAAqwUAAHsFAABDBQAA+QQAANgFAABxBAAAbwUAADgFAAC4BAAAtQUAAIcEAAB1BQAAxwUAAD4FAAAxBQAANQUAAJcEAADkBAAAewUAAAMFAACZBQAAfgUAAP0FAAA2BQAAYAYAAH8GAABEBgAAKgUAAHsFAAAuBgAAIQYAAEgGAAAgBgAAEwYAAP8FAABsBQAA6wUAALcFAACVBQAAqQUAAI4FAAC9BQAAJQUAAMcEAAD+BQAAhQUAAKEFAACZBQAADgUAAGIFAADyBAAAjQUAAMQFAAD5BAAApQUAAI4FAACmBQAAlwUAABMFAAAPBQAAnwUAAM4FAAAcBQAAOwUAAE4FAACjBQAAJwUAAKMFAADVBAAAugQAAOsFAADaBQAABQUAANsFAAD0BAAAhwUAAAAFAAA/BQAANgYAAKAFAAAuBQAAawUAAP8EAAAEBQAAxQQAAAQFAAAqBQAAjwUAAI4FAABGBQAAFwYAANkFAAByBQAAmAUAAPsFAADcBAAAcwUAAEsGAACUBQAAVgUAANAFAAAYBgAAtwUAAHoFAACdBQAAKAUAAKkFAAARBQAAQAUAANcFAADLBAAA5AQAAL0FAADlBQAAuAUAAMoFAABwBQAAkgUAAHUGAADjBQAACwUAANoFAACdBQAApQQAAIYFAAAdBQAAdwYAAFgFAAClBAAAlwUAADoFAACqBQAAywQAAC8FAABjBQAAOAYAAAAGAACFBQAAEwYAAKMFAAD0BAAA0QQAACAFAAD1BQAAhgUAAKkFAADsBAAAJgUAAB8FAACCBQAAZgYAAKwFAABnBQAAEgUAANYFAACEBQAAeQUAAAIFAAASBQAAIAYAAGgFAAAXBQAANwUAABsFAACRBQAAsAUAACgFAACbBQAAugUAAB8FAADnBQAA5QUAAEIGAACIBQAAfQUAAOoFAACTBQAAtAUAAHIFAAAvBQAAYwUAABMFAAA2BgAAPQUAANAEAACoBQAAnwUAAAAFAAATBgAA+gUAAIMGAACXBQAAMwUAAPwFAAArBQAAQwUAAOQEAAABBQAAlgUAAGMEAAB9BQAA7wQAAHUFAACkBAAAMQYAABEFAACHBQAAbwUAAKQFAACcBQAAGgUAAD8FAAAFBQAABQYAAEAFAACoBQAAKwUAAB8FAACxBAAASwUAAA==\"},\"shape\":[250],\"dtype\":\"int32\",\"order\":\"little\"}],[\"norm CFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}],[\"norm YFP\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[250],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1219\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1220\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1215\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1216\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1217\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"norm CFP\"},\"y\":{\"type\":\"field\",\"field\":\"norm YFP\"},\"line_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"#ff7e0e\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1155\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1180\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1181\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1182\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1183\",\"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\":\"SaveTool\",\"id\":\"p1184\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1185\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1186\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1173\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1174\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1176\"},\"axis_label\":\"norm. YFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1175\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1166\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1167\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1169\"},\"axis_label\":\"norm. CFP intensity\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1168\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1172\",\"attributes\":{\"axis\":{\"id\":\"p1166\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1179\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1173\"}}},{\"type\":\"object\",\"name\":\"Legend\",\"id\":\"p1207\",\"attributes\":{\"location\":\"bottom_right\",\"click_policy\":\"hide\",\"items\":[{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1208\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"d22\"},\"renderers\":[{\"id\":\"p1204\"}]}},{\"type\":\"object\",\"name\":\"LegendItem\",\"id\":\"p1221\",\"attributes\":{\"label\":{\"type\":\"value\",\"value\":\"m22\"},\"renderers\":[{\"id\":\"p1218\"}]}}]}}],\"frame_width\":300,\"frame_height\":300,\"output_backend\":\"svg\"}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"3c9ddf30-18e5-4873-b993-6243f0280e7a\",\"roots\":{\"p1149\":\"855ae550-f9ee-48b8-a781-e29c829bde8c\"},\"root_ids\":[\"p1149\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1149" } }, "output_type": "display_data" } ], "source": [ "p.output_backend = 'svg'\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, click the disk icon in the plot above to save it.\n", "\n", "After saving, we should switch back to canvas." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "p.output_backend = 'canvas'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also save the figure programmatically using the `bokeh.io.export_svgs()` function. This requires additional installations, so we will not do it here, but show the code to do it. Again, this will only work if the output backed is `'svg'`.\n", "\n", "```python\n", "p.output_backend = 'svg'\n", "bokeh.io.export_svgs(p, filename='insomniac_confidence_correct.svg')\n", "p.output_backend = 'canvas'\n", "```\n", "\n", "Finally, to save as HTML, you can use the `bokeh.io.save()` function. This saves your plot as a standalone HTML page. Note that the `title` kwarg is not the title of the plot, but the title of the web page that will appear on your Browser tab." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "bokeh.io.save(\n", " p, \n", " filename='our_first_bokeh_plot.html', \n", " title='Bokeh plot',\n", " resources=bokeh.resources.CDN,\n", ");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting HTML page has all of the interactivity of the plot and you can, for example, email it to your collaborators for them to explore." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting generated data\n", "\n", "You're now a pro at plotting measured data. But sometimes, you want to plot smooth functions. To do this, you can use Numpy and/or Scipy to generate arrays of values of smooth functions.\n", "\n", "We will plot the [Airy disk](https://en.wikipedia.org/wiki/Airy_disk), which we encounter in biology when doing microscopy as the diffraction pattern of light passing through a pinhole. Here is a picture of the diffraction pattern from a laser (with the main peak overexposed).\n", "\n", "
\n", " \n", "![Airy disk](airy_disk.png)\n", "\n", "
\n", " \n", "The equation for the radial light intensity of an Airy disk is\n", "\n", "\\begin{align}\n", "\\frac{I(x)}{I_0} = 4 \\left(\\frac{J_1(x)}{x}\\right)^2,\n", "\\end{align}\n", "\n", "where $I_0$ is the maximum intensity (the intensity at the center of the image) and $x$ is the radial distance from the center. Here, $J_1(x)$ is the first order Bessel function of the first kind. Yeesh. How do we plot *that*?\n", "\n", "Fortunately, SciPy has lots of special functions available. Specifically, `scipy.special.j1()` computes exactly what we are after! We pass in a NumPy array that has the values of $x$ we want to plot and then compute the $y$-values using the expression for the normalized intensity.\n", "\n", "To plot a smooth curve, we use the `np.linspace()` function with lots of points. We then connect the points with straight lines, which to the eye look like a smooth curve. Let's try it. We'll use 400 points, which I find is a good rule of thumb for not-too-oscillating functions." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# The x-values we want\n", "x = np.linspace(-15, 15, 400)\n", "\n", "# The normalized intensity\n", "norm_I = 4 * (scipy.special.j1(x) / x)**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have the values we want to plot, we could construct a Pandas `DataFrame` to pass in as the `source` to `p.line()`. We do not need to take this extra step, though. If we instead leave `source` unspecified, and pass in NumPy arrays for `x` and `y`, Bokeh will directly use those in constructing the plot." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"f24c2ed5-ddee-4cf7-966e-a4d5a014f1ae\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1695\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1704\",\"attributes\":{\"start\":-15,\"end\":15}},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1697\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1708\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1710\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1703\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1747\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1741\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1743\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1742\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"6Y7PzJWBSD/bWgiWah9JP+cQhku2d0k/NM/7R26HST+4sMguG01JPwQduPbtyEg/WdK/Hsz8Rz8HQFeCUuxGPw0+snPOnEU/Q3BC9iwVRD/XHF8q4F1CP8aWtjK7gEA/9NUVKIoRPT8skACNBgQ5P9xBbch58jQ/v8epI2/3MD/ymqKnvVsqP+JCwGktYSM/yrFZHHxmGj8ldk3yeQYQP1u0+kEQ9P8+82UNY5nU5D65Fv/01KGhPgvzON6MnMk+3zwAVhn18j6wMjo6sREIP0Num7KbsRY/K8ssJDpTIj/udayWcuEqP8vY3EvNczI/VaFv+UAgOD8exZF9E18+Pw9RK+CbikI/miEfnQUSRj+PWju38rRJP3h5Q+NeYU0/C3naPTmCUD8+1XOkc0VSP9CKs7m58FM/tqS1QJx6VT/NtToLGtpWP2x8oQbYBlg/wDTMuFf5WD9L/M7sKqtZP0toIVMjF1o/ZQzR43w5Wj84xeDiARBaP67Xd38nmlk/L7J9JSLZWD+EbU++8M9XPxcI00deg1Y/KEeXWPn5VD8G0xtbATxTP4yU3IBJU1E/lc2LTCOWTj+QQGI0q19KP+sjj+kmHkY/dIHywhPuQT+vdHPTvdk7P2BebGKRcDQ/M5NnHv62Kz+p17ni1qYgPxa7bcyrNxA/FI0PRty+8z4FcW/4Vu6gPuMA7Oj47OI+DBcHCxIjCD/r0b3BRocdP/07gwUxcCs/tuEyOe4ENj/3Jj/BeB1AP7/sHLW5IEY/ELrSpz/6TD+v78WOSElSP0xNbbx8ZlY/+o/itvbDWj+uoX2dx05fPzS6P1UU+WE/4vFKX+1LZD9laeJjSZRmPxYkdKo4xmg/HH7pq8HVaj8jp9znJLdsP6Bn7uoiX24/DON0KEPDbz9mO2saDW1wPyDmwe/GzXA/uNgc0ooAcT88fbj1+gJxPwU+/Uy603A/Ktjyv4JycD+PtwJPbcBvPwDrdeHZPW4/UeClwO5jbD+vEN4LxTtqPxNSuhPe0Gc/IawVOwgxZT+7aOnuNWxiPxTPi5aNKF8/RalsloZ5WT+mIXRVF/VTP557867rjU0/Kvbz3vw3RD/3TrDxSIU4P6dbdig3Gyg/WsetX3KhDT9a70G0bJ65PoqeHgXo/fw+L9xqLnKsIj9+wBIhdxU3P+HeVcofrkU/wQgtlfGWUT+QOtwAOAlaP1McXPqxFGI/2phSauT0Zz+rKuDYnZluP1tjoKs7+XI/gPZXEx/1dj9qistniTN7PxY0gWJRpX8/sJNDUp8cgj8EZcj1IG6EP0qVlHjdvIY/HdzAzuX9iD8hhx/82yWLP1vqAQEpKY0/5DQzMTj8jj/K+SKm20mQPyvmeUht8pA/kTzr9NFykT8YPVoclsaRP1BGvtf26ZE/VwmpCQfakT9Mw5Tb05SRPyHwZPiHGZE/Na514oxokD/QJuKFUwePP4k7/yM+3Iw/F6Kz93xZij9gKpbb/IuHP5J1qX8RhIQ/X5CJ94dVgT+hGJVEWy98P7tJCFmVynU/oVuzSz5ybz+MW0LW1HtkPyRnz8R5iFY/8j/G8wmlQT+Nxmt5X2ESP4NykETcrgw/mbiHXq8DQz/GXi2103dcP8Ye2+POpW0/2Uzo8DbheT9jyZh7R1WEP8T31+uZx40/FT65fDO7lD+1Kq5FS8ebPz8dS/agDqI/NJ87OVfopj856xD3oHmsP5JXZI4eZbE/lHbM6VXwtD/raRyyBeG4P4oqadL7OL0/kaXFG5v8wD+35mTl6pDDPwbm0bEJWcY/EHOmcRtUyT8Y81xTyIDMP1Ru1Lo63c8/T0p9Q4+z0T/XurbY0I3TPz+i6Se7e9U/qtAx/Wp71z9N6FxLw4rZPzB3yEBwp9s/LAHJBuvO3T+wx3ckfv7fP8Cgzj2lGeE/ozQuaiY14j+wayf1MVDjP4sa+XUraeQ/9OXRLW5+5T8iefqfUI7mP4VB9Ecol+c/CJ1VY02X6D8ha83EHo3pPxO1eqUFd+o/Sc6qaXlT6z+OhBlOAyHsP9nn+/JB3uw/RH5uuuyJ7T8fkFLw1iLuP1dGOrLyp+4/sMy2jlMY7z/QTyzUMHPvP03YOojnt+8/MqnNAfzl7z9diPkgG/3vP12I+SAb/e8/NqnNAfzl7z9L2DqI57fvP85PLNQwc+8/sMy2jlMY7z9fRjqy8qfuPx+QUvDWIu4/R35uuuyJ7T/e5/vyQd7sP4+EGU4DIew/Ts6qaXlT6z8YtXqlBXfqPyZrzcQejek/FJ1VY02X6D+NQfRHKJfnPzF5+p9QjuY//uXRLW5+5T+TGvl1K2nkP7hrJ/UxUOM/rjQuaiY14j/EoM49pRnhP8fHdyR+/t8/OgHJBuvO3T84d8hAcKfbP13oXEvDitk/uNAx/Wp71z9Qouknu3vVP+K6ttjQjdM/W0p9Q4+z0T9ubtS6Ot3PPzLzXFPIgMw/EHOmcRtUyT8G5tGxCVnGP7fmZOXqkMM/kaXFG5v8wD+KKmnS+zi9P+tpHLIF4bg/lHbM6VXwtD+SV2SOHmWxPznrEPegeaw/dp87OVfopj9+HUv2oA6iPxwrrkVLx5s/bj65fDO7lD9a+NfrmceNP9bJmHtHVYQ/hE3o8DbheT/NH9vjzqVtP3lfLbXTd1w/QbmHXq8DQz/wdZBE3K4MP8HEa3lfYRI/YT/G8wmlQT+3Zs/EeYhWP0pbQtbUe2Q/VVuzSz5ybz+RSQhZlcp1P24YlURbL3w/R5CJ94dVgT98dal/EYSEP00qltv8i4c/AqKz93xZij92O/8jPtyMP9Am4oVTB48/Na514oxokD8h8GT4hxmRP0zDlNvTlJE/VwmpCQfakT9QRr7X9umRPxg9WhyWxpE/kTzr9NFykT8r5nlIbfKQP8r5IqbbSZA/9jQzMTj8jj9u6gEBKSmNPzyHH/zbJYs/O9zAzuX9iD9rlZR43byGPyJlyPUgboQ/0ZNDUp8cgj8vNIFiUaV/P4yKy2eJM3s/nPZXEx/1dj93Y6CrO/lyP88q4NidmW4//JhSauT0Zz94HFz6sRRiP8863AA4CVo/8wgtlfGWUT8y31XKH65FP/HAEiF3FTc/uNxqLnKsIj9voB4F6P38PuzrQbRsnrk+tcatX3KhDT9jW3YoNxsoP8NOsPFIhTg/D/bz3vw3RD94e/Ou641NP6YhdFUX9VM/RalsloZ5WT8Uz4uWjShfP7to6e41bGI/IawVOwgxZT/xUboT3tBnP44Q3gvFO2o/K+ClwO5jbD/j6nXh2T1uP3+3Ak9twG8/Jtjyv4JycD8BPv1MutNwPzl9uPX6AnE/utgc0ooAcT8i5sHvxs1wP247axoNbXA/EON0KEPDbz+uZ+7qIl9uPymn3Ockt2w/JX7pq8HVaj8kJHSqOMZoP3lp4mNJlGY/7fFKX+1LZD9Euj9VFPlhP8qhfZ3HTl8/+o/itvbDWj9MTW28fGZWP6/vxY5ISVI/ELrSpz/6TD+/7By1uSBGP/cmP8F4HUA/tuEyOe4ENj/9O4MFMXArP+vRvcFGhx0/DBcHCxIjCD/jAOzo+OziPgVxb/hW7qA+FI0PRty+8z5Xum3MqzcQPyTXueLWpiA/kZJnHv62Kz8BXmxikXA0P0B0c9O92Ts/PIHywhPuQT+xI4/pJh5GP1dAYjSrX0o/Ys2LTCOWTj+OlNyASVNRPwvTG1sBPFM/KEeXWPn5VD8gCNNHXoNWP4ZtT77wz1c/MrJ9JSLZWD+x13d/J5pZPzjF4OIBEFo/ZwzR43w5Wj9OaCFTIxdaP1D8zuwqq1k/wDTMuFf5WD9sfKEG2AZYP821Ogsa2lY/tqS1QJx6VT/QirO5ufBTPz7Vc6RzRVI/C3naPTmCUD94eUPjXmFNP49aO7fytEk/miEfnQUSRj8PUSvgm4pCP3PFkX0TXz4/pqFv+UAgOD8V2dxLzXMyP2t2rJZy4So/kcssJDpTIj/lbpuym7EWP58zOjqxEQg/Cz4AVhn18j7U9jjejJzJPr8W//TUoaE+9GUNY5nU5D5btPpBEPT/Pil2TfJ5BhA/zbFZHHxmGj/jQsBpLWEjP/aaoqe9Wyo/wcepI2/3MD/jQW3IefI0Py+QAI0GBDk/9NUVKIoRPT/MlrYyu4BAP9ocXyrgXUI/RHBC9iwVRD8NPrJzzpxFPwdAV4JS7EY/WdK/Hsz8Rz8EHbj27chIP7iwyC4bTUk/NM/7R26HST/nEIZLtndJP9taCJZqH0k/6Y7PzJWBSD8=\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1748\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1749\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1744\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1745\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1746\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1701\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1726\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1727\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1728\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1729\",\"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\":\"SaveTool\",\"id\":\"p1730\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1731\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1732\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1719\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1720\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1722\"},\"axis_label\":\"I(x)/I\\u2080\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1721\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1712\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1713\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1715\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1714\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1718\",\"attributes\":{\"axis\":{\"id\":\"p1712\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1725\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1719\"}}}],\"frame_width\":550,\"frame_height\":250}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"f24c2ed5-ddee-4cf7-966e-a4d5a014f1ae\",\"roots\":{\"p1695\":\"665674a3-a844-4b8f-a4fc-b142cda8126d\"},\"root_ids\":[\"p1695\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1695" } }, "output_type": "display_data" } ], "source": [ "p = bokeh.plotting.figure(\n", " frame_height=250,\n", " frame_width=550,\n", " x_axis_label=\"x\",\n", " y_axis_label=\"I(x)/I₀\",\n", " x_range=[-15, 15],\n", ")\n", "\n", "p.line(\n", " x=x,\n", " y=norm_I,\n", " line_width=2,\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We could also plot dots (which doesn't make sense here, but we'll show it just to see how the line joining works to make a plot of a smooth function)." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "
\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/javascript": [ "(function(root) {\n", " function embed_document(root) {\n", " const docs_json = {\"eff1a2a0-9433-4df4-8b42-5ef566be93c3\":{\"version\":\"3.1.0\",\"title\":\"Bokeh Application\",\"defs\":[],\"roots\":[{\"type\":\"object\",\"name\":\"Figure\",\"id\":\"p1695\",\"attributes\":{\"x_range\":{\"type\":\"object\",\"name\":\"Range1d\",\"id\":\"p1704\",\"attributes\":{\"start\":-15,\"end\":15}},\"y_range\":{\"type\":\"object\",\"name\":\"DataRange1d\",\"id\":\"p1697\"},\"x_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1708\"},\"y_scale\":{\"type\":\"object\",\"name\":\"LinearScale\",\"id\":\"p1710\"},\"title\":{\"type\":\"object\",\"name\":\"Title\",\"id\":\"p1703\"},\"renderers\":[{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1747\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1741\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1743\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1742\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1748\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1749\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1744\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_width\":2}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1745\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.1,\"line_width\":2}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Line\",\"id\":\"p1746\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"line_color\":\"#1f77b4\",\"line_alpha\":0.2,\"line_width\":2}}}},{\"type\":\"object\",\"name\":\"GlyphRenderer\",\"id\":\"p1878\",\"attributes\":{\"data_source\":{\"type\":\"object\",\"name\":\"ColumnDataSource\",\"id\":\"p1872\",\"attributes\":{\"selected\":{\"type\":\"object\",\"name\":\"Selection\",\"id\":\"p1874\",\"attributes\":{\"indices\":[],\"line_indices\":[]}},\"selection_policy\":{\"type\":\"object\",\"name\":\"UnionRenderers\",\"id\":\"p1873\"},\"data\":{\"type\":\"map\",\"entries\":[[\"x\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}],[\"y\",{\"type\":\"ndarray\",\"array\":{\"type\":\"bytes\",\"data\":\"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\"},\"shape\":[400],\"dtype\":\"float64\",\"order\":\"little\"}]]}}},\"view\":{\"type\":\"object\",\"name\":\"CDSView\",\"id\":\"p1879\",\"attributes\":{\"filter\":{\"type\":\"object\",\"name\":\"AllIndices\",\"id\":\"p1880\"}}},\"glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1875\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":2},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"}}},\"nonselection_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1876\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":2},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.1},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.1},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.1}}},\"muted_glyph\":{\"type\":\"object\",\"name\":\"Circle\",\"id\":\"p1877\",\"attributes\":{\"x\":{\"type\":\"field\",\"field\":\"x\"},\"y\":{\"type\":\"field\",\"field\":\"y\"},\"size\":{\"type\":\"value\",\"value\":2},\"line_color\":{\"type\":\"value\",\"value\":\"orange\"},\"line_alpha\":{\"type\":\"value\",\"value\":0.2},\"fill_color\":{\"type\":\"value\",\"value\":\"orange\"},\"fill_alpha\":{\"type\":\"value\",\"value\":0.2},\"hatch_color\":{\"type\":\"value\",\"value\":\"orange\"},\"hatch_alpha\":{\"type\":\"value\",\"value\":0.2}}}}}],\"toolbar\":{\"type\":\"object\",\"name\":\"Toolbar\",\"id\":\"p1701\",\"attributes\":{\"tools\":[{\"type\":\"object\",\"name\":\"PanTool\",\"id\":\"p1726\"},{\"type\":\"object\",\"name\":\"WheelZoomTool\",\"id\":\"p1727\"},{\"type\":\"object\",\"name\":\"BoxZoomTool\",\"id\":\"p1728\",\"attributes\":{\"overlay\":{\"type\":\"object\",\"name\":\"BoxAnnotation\",\"id\":\"p1729\",\"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\":\"SaveTool\",\"id\":\"p1730\"},{\"type\":\"object\",\"name\":\"ResetTool\",\"id\":\"p1731\"},{\"type\":\"object\",\"name\":\"HelpTool\",\"id\":\"p1732\"}]}},\"left\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1719\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1720\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1722\"},\"axis_label\":\"I(x)/I\\u2080\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1721\"}}}],\"below\":[{\"type\":\"object\",\"name\":\"LinearAxis\",\"id\":\"p1712\",\"attributes\":{\"ticker\":{\"type\":\"object\",\"name\":\"BasicTicker\",\"id\":\"p1713\",\"attributes\":{\"mantissas\":[1,2,5]}},\"formatter\":{\"type\":\"object\",\"name\":\"BasicTickFormatter\",\"id\":\"p1715\"},\"axis_label\":\"x\",\"major_label_policy\":{\"type\":\"object\",\"name\":\"AllLabels\",\"id\":\"p1714\"}}}],\"center\":[{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1718\",\"attributes\":{\"axis\":{\"id\":\"p1712\"}}},{\"type\":\"object\",\"name\":\"Grid\",\"id\":\"p1725\",\"attributes\":{\"dimension\":1,\"axis\":{\"id\":\"p1719\"}}}],\"frame_width\":550,\"frame_height\":250}}],\"callbacks\":{\"type\":\"map\"}}};\n", " const render_items = [{\"docid\":\"eff1a2a0-9433-4df4-8b42-5ef566be93c3\",\"roots\":{\"p1695\":\"16ab32e0-7224-481c-a1ef-9760e85fc85b\"},\"root_ids\":[\"p1695\"]}];\n", " root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n", " }\n", " if (root.Bokeh !== undefined) {\n", " embed_document(root);\n", " } else {\n", " let attempts = 0;\n", " const timer = setInterval(function(root) {\n", " if (root.Bokeh !== undefined) {\n", " clearInterval(timer);\n", " embed_document(root);\n", " } else {\n", " attempts++;\n", " if (attempts > 100) {\n", " clearInterval(timer);\n", " console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n", " }\n", " }\n", " }, 10, root)\n", " }\n", "})(window);" ], "application/vnd.bokehjs_exec.v0+json": "" }, "metadata": { "application/vnd.bokehjs_exec.v0+json": { "id": "p1695" } }, "output_type": "display_data" } ], "source": [ "p.circle(\n", " x=x,\n", " y=norm_I,\n", " size=2,\n", " color=\"orange\"\n", ")\n", "\n", "bokeh.io.show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There is one detail I swept under the rug here. What happens if we compute the function for $x = 0$?" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/j_/c5r9ch0913v3h1w4bdwzm0lh0000gn/T/ipykernel_46931/1311113470.py:1: RuntimeWarning: invalid value encountered in double_scalars\n", " 4 * (scipy.special.j1(0) / 0)**2\n" ] }, { "data": { "text/plain": [ "nan" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "4 * (scipy.special.j1(0) / 0)**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We get a `RuntimeWarning` because we divided by zero. We know that\n", "\n", "\\begin{align}\n", "\\lim_{x\\to 0} \\frac{J_1(x)}{x} = \\frac{1}{2},\n", "\\end{align}\n", "\n", "so we could write a new function that checks if $x = 0$ and returns the appropriate limit for $x = 0$. In the `x` array I constructed for the plot, we hopped over zero, so it was never evaluated. If we were being careful, we could write our own Airy function that deals with this." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def airy_disk(x):\n", " \"\"\"Compute the Airy disk.\"\"\"\n", " # Set up output array\n", " res = np.empty_like(x)\n", " \n", " # Where x is very close to zero (use np.isclose)\n", " near_zero = np.isclose(x, 0)\n", " \n", " # Compute values where x is close to zero\n", " res[near_zero] = 1.0\n", "\n", " # Everywhere else\n", " x_vals = x[~near_zero]\n", " res[~near_zero] = 4 * (scipy.special.j1(x_vals) / x_vals)**2\n", " \n", " return res" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing environment" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "tags": [ "hide-input" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python implementation: CPython\n", "Python version : 3.10.10\n", "IPython version : 8.10.0\n", "\n", "pandas : 1.5.3\n", "bokeh : 3.1.0\n", "jupyterlab: 3.5.3\n", "\n" ] } ], "source": [ "%load_ext watermark\n", "%watermark -v -p pandas,bokeh,jupyterlab" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.10" } }, "nbformat": 4, "nbformat_minor": 4 }