Skip to content

Instantly share code, notes, and snippets.

@adikamath
Created December 22, 2017 11:43
Show Gist options
  • Save adikamath/3e9c3f44d43ea6da83de7879c741d27e to your computer and use it in GitHub Desktop.
Save adikamath/3e9c3f44d43ea6da83de7879c741d27e to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Download and Clean Data"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''import packages required for data wrangling'''\n",
"\n",
"import pandas as pd\n",
"import re"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The datasets that we have downloaded are not in the desired form that we want in that they have both column and row names. To make it easier for us to work with the datasets, we need to create 'tidy' datasets. Essentially, each variable must be in its own column. You can read more about this in Hadley Wicham's paper- <a href=\"https://cran.r-project.org/web/packages/tidyr/vignettes/tidy-data.html\">Tidy Data</a>. "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''melting the income dataset using pandas'''\n",
"\n",
"income = pd.read_excel('/Users/adityakamath/Desktop/gapminder_data/income.xlsx', sheetname = 'Data')\n",
"income = pd.melt(income, id_vars = ['country'])\n",
"income.columns = ['country', 'year', 'income']\n",
"'''strip the country names of spaces so that we can use them for merging later on'''\n",
"income['country'] = income['country'].map(lambda x: x.strip()).astype(str)\n",
"income['year'] = income['year'].astype(str)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''melting the population dataset'''\n",
"\n",
"population = pd.read_excel('/Users/adityakamath/Desktop/gapminder_data/population.xlsx', sheetname = 'Data')\n",
"population = pd.melt(population, id_vars = ['country'])\n",
"population.columns = ['country', 'year', 'population']\n",
"population['country'] = population['country'].map(lambda x: x.strip())\n",
"population['year'] = population['year'].astype(str)\n",
"'''convert all population values to integer type'''\n",
"population['population'] = population['population'].fillna(value = 0)\n",
"population['population'] = population['population'].astype(str)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true,
"scrolled": true
},
"outputs": [],
"source": [
"'''melting the life_expectancy dataset'''\n",
"\n",
"life_expectancy = pd.read_excel('/Users/adityakamath/Desktop/gapminder_data/life_expectancy.xlsx', sheetname = 'Data')\n",
"life_expectancy = pd.melt(life_expectancy, id_vars = ['country'])\n",
"life_expectancy.columns = ['country', 'year', 'life_expectancy']\n",
"life_expectancy['country'] = life_expectancy['country'].map(lambda x: x.strip()).astype(str)\n",
"life_expectancy['year'] = life_expectancy['year'].astype(str)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The three datasets above don't have any data on which region each country belongs to. So we need to find a dataset that gives us this information. Head on over to this <a href=\"https://github.com/mledoze/countries/tree/master/dist\">GitHub repo</a> and download the countries.csv dataset."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''for each country in the countries.csv dataset, there are several different names. \n",
"Let us take only the first name for each country and create a regions dataset with only the country \n",
"and the corresponding region.'''\n",
"\n",
"regions = pd.read_csv('/Users/adityakamath/Desktop/gapminder_data/countries.csv')\n",
"regions['country'] = regions['name'].apply(lambda x: re.findall('[^,]*', x)[0])\n",
"regions = regions[['country', 'region']]"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''first let's merge the income and population dataset'''\n",
"\n",
"merge1 = pd.merge(left = income, right = population, on = ['country', 'year'], how = 'inner')\n",
"\n",
"'''then merge merge1 and life_expectancy'''\n",
"merge2 = pd.merge(left = merge1, right = life_expectancy, on = ['country', 'year'], how = 'inner')\n",
"#worldDF.set_index('year', inplace = True)\n",
"\n",
"'''finally merge merge2 and the regions dataset'''\n",
"worldDF = pd.merge(left = merge2, right = regions, on = 'country', how = 'left')\n",
"worldDF.region = worldDF.region.fillna('Other')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load Bokeh"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Creating plots with Bokeh basically involves four steps. The first step is complete, ie., preparing data. Second, you create a plot using the figure() function. Then you add the necessary glyphs to visualize the data in the plot and finally show the output."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <div class=\"bk-root\">\n",
" <a href=\"https://bokeh.pydata.org\" target=\"_blank\" class=\"bk-logo bk-logo-small bk-logo-notebook\"></a>\n",
" <span id=\"e9451627-68ad-4eba-ba3f-65253d8b39fa\">Loading BokehJS ...</span>\n",
" </div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"\n",
"(function(root) {\n",
" function now() {\n",
" return new Date();\n",
" }\n",
"\n",
" var 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",
" var JS_MIME_TYPE = 'application/javascript';\n",
" var HTML_MIME_TYPE = 'text/html';\n",
" var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n",
" var CLASS_NAME = 'output_bokeh rendered_html';\n",
"\n",
" /**\n",
" * Render data to the DOM node\n",
" */\n",
" function render(props, node) {\n",
" var 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",
" var cell = handle.cell;\n",
"\n",
" var id = cell.output_area._bokeh_element_id;\n",
" var server_id = cell.output_area._bokeh_server_id;\n",
" // Clean up Bokeh references\n",
" if (id !== undefined) {\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",
" var cmd = \"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, {\n",
" iopub: {\n",
" output: function(msg) {\n",
" var element_id = msg.content.text.trim();\n",
" Bokeh.index[element_id].model.document.clear();\n",
" delete Bokeh.index[element_id];\n",
" }\n",
" }\n",
" });\n",
" // Destroy server and session\n",
" var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n",
" cell.notebook.kernel.execute(cmd);\n",
" }\n",
" }\n",
"\n",
" /**\n",
" * Handle when a new output is added\n",
" */\n",
" function handleAddOutput(event, handle) {\n",
" var output_area = handle.output_area;\n",
" var output = handle.output;\n",
"\n",
" // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n",
" if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",
" return\n",
" }\n",
"\n",
" var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",
"\n",
" if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n",
" toinsert[0].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",
" var bk_div = document.createElement(\"div\");\n",
" bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",
" var script_attrs = bk_div.children[0].attributes;\n",
" for (var i = 0; i < script_attrs.length; i++) {\n",
" toinsert[0].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n",
" }\n",
" // store reference to server id on output_area\n",
" output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",
" }\n",
" }\n",
"\n",
" function register_renderer(events, OutputArea) {\n",
"\n",
" function append_mime(data, metadata, element) {\n",
" // create a DOM node to render to\n",
" var toinsert = this.create_output_subarea(\n",
" metadata,\n",
" CLASS_NAME,\n",
" EXEC_MIME_TYPE\n",
" );\n",
" this.keyboard_manager.register_events(toinsert);\n",
" // Render to node\n",
" var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",
" render(props, toinsert[0]);\n",
" element.append(toinsert);\n",
" return toinsert\n",
" }\n",
"\n",
" /* 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",
" var events = require('base/js/events');\n",
" var 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",
"\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",
" var NB_LOAD_WARNING = {'data': {'text/html':\n",
" \"<div style='background-color: #fdd'>\\n\"+\n",
" \"<p>\\n\"+\n",
" \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n",
" \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n",
" \"</p>\\n\"+\n",
" \"<ul>\\n\"+\n",
" \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n",
" \"<li>use INLINE resources instead, as so:</li>\\n\"+\n",
" \"</ul>\\n\"+\n",
" \"<code>\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"</code>\\n\"+\n",
" \"</div>\"}};\n",
"\n",
" function display_loaded() {\n",
" var el = document.getElementById(\"e9451627-68ad-4eba-ba3f-65253d8b39fa\");\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",
"\n",
" function run_callbacks() {\n",
" try {\n",
" root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n",
" }\n",
" finally {\n",
" delete root._bokeh_onload_callbacks\n",
" }\n",
" console.info(\"Bokeh: all callbacks have finished\");\n",
" }\n",
"\n",
" function load_libs(js_urls, callback) {\n",
" root._bokeh_onload_callbacks.push(callback);\n",
" if (root._bokeh_is_loading > 0) {\n",
" console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",
" return null;\n",
" }\n",
" if (js_urls == null || js_urls.length === 0) {\n",
" run_callbacks();\n",
" return null;\n",
" }\n",
" console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",
" root._bokeh_is_loading = js_urls.length;\n",
" for (var i = 0; i < js_urls.length; i++) {\n",
" var url = js_urls[i];\n",
" var s = document.createElement('script');\n",
" s.src = url;\n",
" s.async = false;\n",
" s.onreadystatechange = s.onload = function() {\n",
" root._bokeh_is_loading--;\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: all BokehJS libraries loaded\");\n",
" run_callbacks()\n",
" }\n",
" };\n",
" s.onerror = function() {\n",
" console.warn(\"failed to load library \" + url);\n",
" };\n",
" console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",
" document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
" }\n",
" };var element = document.getElementById(\"e9451627-68ad-4eba-ba3f-65253d8b39fa\");\n",
" if (element == null) {\n",
" console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e9451627-68ad-4eba-ba3f-65253d8b39fa' but no matching script tag was found. \")\n",
" return false;\n",
" }\n",
"\n",
" var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n",
"\n",
" var inline_js = [\n",
" function(Bokeh) {\n",
" Bokeh.set_log_level(\"info\");\n",
" },\n",
" \n",
" function(Bokeh) {\n",
" \n",
" },\n",
" function(Bokeh) {\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n",
" console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n",
" Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n",
" }\n",
" ];\n",
"\n",
" function run_inline_js() {\n",
" \n",
" if ((root.Bokeh !== undefined) || (force === true)) {\n",
" for (var i = 0; i < inline_js.length; i++) {\n",
" inline_js[i].call(root, root.Bokeh);\n",
" }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",
" var cell = $(document.getElementById(\"e9451627-68ad-4eba-ba3f-65253d8b39fa\")).parents('.cell').data().cell;\n",
" cell.output_area.append_execute_result(NB_LOAD_WARNING)\n",
" }\n",
"\n",
" }\n",
"\n",
" if (root._bokeh_is_loading === 0) {\n",
" console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n",
" run_inline_js();\n",
" } else {\n",
" load_libs(js_urls, function() {\n",
" console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n",
" run_inline_js();\n",
" });\n",
" }\n",
"}(window));"
],
"application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var 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\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 var NB_LOAD_WARNING = {'data': {'text/html':\n \"<div style='background-color: #fdd'>\\n\"+\n \"<p>\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"</p>\\n\"+\n \"<ul>\\n\"+\n \"<li>re-rerun `output_notebook()` to attempt to load from CDN again, or</li>\\n\"+\n \"<li>use INLINE resources instead, as so:</li>\\n\"+\n \"</ul>\\n\"+\n \"<code>\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"</code>\\n\"+\n \"</div>\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"e9451627-68ad-4eba-ba3f-65253d8b39fa\");\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\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) { callback() });\n }\n finally {\n delete root._bokeh_onload_callbacks\n }\n console.info(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(js_urls, callback) {\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.log(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.log(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = js_urls.length;\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var s = document.createElement('script');\n s.src = url;\n s.async = false;\n s.onreadystatechange = s.onload = function() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: all BokehJS libraries loaded\");\n run_callbacks()\n }\n };\n s.onerror = function() {\n console.warn(\"failed to load library \" + url);\n };\n console.log(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.getElementsByTagName(\"head\")[0].appendChild(s);\n }\n };var element = document.getElementById(\"e9451627-68ad-4eba-ba3f-65253d8b39fa\");\n if (element == null) {\n console.log(\"Bokeh: ERROR: autoload.js configured with elementid 'e9451627-68ad-4eba-ba3f-65253d8b39fa' but no matching script tag was found. \")\n return false;\n }\n\n var js_urls = [\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.js\", \"https://cdn.pydata.org/bokeh/release/bokeh-gl-0.12.13.min.js\"];\n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n \n function(Bokeh) {\n \n },\n function(Bokeh) {\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-widgets-0.12.13.min.css\");\n console.log(\"Bokeh: injecting CSS: https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n Bokeh.embed.inject_css(\"https://cdn.pydata.org/bokeh/release/bokeh-tables-0.12.13.min.css\");\n }\n ];\n\n function run_inline_js() {\n \n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }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 var cell = $(document.getElementById(\"e9451627-68ad-4eba-ba3f-65253d8b39fa\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.log(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(js_urls, function() {\n console.log(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"'''let's import the required packages. To see the output inside the jupyter notebook, call the output_notebook() \n",
"function. To show the output as a separate file use output_file() function. I've used both here since I want to use \n",
"the output file separately.'''\n",
"\n",
"from bokeh.io import output_notebook, output_file, show\n",
"from bokeh.plotting import figure\n",
"from bokeh.models import ColumnDataSource\n",
"output_notebook()\n",
"output_file('/Users/adityakamath/Desktop/gapminder.html')"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''ColumnDataSource is an important data structure in bokeh and it is used to pass data to many of the plotting\n",
"functions. You can pass a dictionary, a pandas dataframe or even a pandas groupby object to it. In this case, I will\n",
"be passing the worldDF dataframe with data only for year 2009.'''\n",
"\n",
"worldDF2 = worldDF[worldDF['year'].astype(int) == 2009]\n",
"source = ColumnDataSource(worldDF2)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"05de81ca-f0d6-4b7f-9728-54406f5f361a\"></div>\n",
"</div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"f7f23995-b40d-4173-941d-776c2ee3c850\":{\"roots\":{\"references\":[{\"attributes\":{\"bottom_units\":\"screen\",\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"lightgrey\"},\"left_units\":\"screen\",\"level\":\"overlay\",\"line_alpha\":{\"value\":1.0},\"line_color\":{\"value\":\"black\"},\"line_dash\":[4,4],\"line_width\":{\"value\":2},\"plot\":null,\"render_mode\":\"css\",\"right_units\":\"screen\",\"top_units\":\"screen\"},\"id\":\"be336b6b-5183-4d8b-9c51-0ee07ffcd567\",\"type\":\"BoxAnnotation\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.5},\"fill_color\":{\"value\":\"#f98d77\"},\"line_color\":{\"value\":\"#e65c6f\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"income\"},\"y\":{\"field\":\"life_expectancy\"}},\"id\":\"1de57667-9430-46dd-b58b-d6d1a1525d22\",\"type\":\"Circle\"},{\"attributes\":{},\"id\":\"cc1b8086-5f09-4ab2-84ea-bbedc45c4b1b\",\"type\":\"PanTool\"},{\"attributes\":{\"callback\":null},\"id\":\"f141619e-90b5-4980-aba8-53f1478aaaae\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"406d1c26-f00b-4c9e-936f-1176cfaf6719\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"overlay\":{\"id\":\"be336b6b-5183-4d8b-9c51-0ee07ffcd567\",\"type\":\"BoxAnnotation\"}},\"id\":\"f3383c82-c2f6-4c56-be09-a144ed80e523\",\"type\":\"BoxZoomTool\"},{\"attributes\":{},\"id\":\"b80cc99c-9754-4ca8-999b-5de266f55774\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"771e7d52-e2f1-41c2-9037-da5596246e7d\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"31626562-9ed7-462e-be30-4339369fbcf2\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"a30f705a-cfab-40c3-922a-413f21fc3147\",\"type\":\"HelpTool\"},{\"attributes\":{},\"id\":\"3629c002-48df-4a83-9926-b799bd5fbf9d\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":15},\"x\":{\"field\":\"income\"},\"y\":{\"field\":\"life_expectancy\"}},\"id\":\"cb633b40-c330-4ddc-b07c-6607f66cbd4f\",\"type\":\"Circle\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"08e65bd8-7cbf-483c-93dc-a9a13be35724\",\"type\":\"BasicTicker\"}},\"id\":\"4a38b888-1a0a-44e6-b80a-ded7f67fd02b\",\"type\":\"Grid\"},{\"attributes\":{\"below\":[{\"id\":\"d0324f72-1d75-4568-92c0-25922bcd55ae\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"4630cd27-768c-4e0b-b4e8-22c6640b69de\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"renderers\":[{\"id\":\"d0324f72-1d75-4568-92c0-25922bcd55ae\",\"type\":\"LinearAxis\"},{\"id\":\"a114495d-eb5f-4176-a5dc-54d34d19e8fe\",\"type\":\"Grid\"},{\"id\":\"4630cd27-768c-4e0b-b4e8-22c6640b69de\",\"type\":\"LinearAxis\"},{\"id\":\"4a38b888-1a0a-44e6-b80a-ded7f67fd02b\",\"type\":\"Grid\"},{\"id\":\"be336b6b-5183-4d8b-9c51-0ee07ffcd567\",\"type\":\"BoxAnnotation\"},{\"id\":\"96169a25-8e33-4825-b4ad-2e78e822d6ca\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"5ec7bba7-f3f6-4c52-8315-3996dbef6087\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"462a8403-f025-4ef0-821d-6166909dcf42\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"a45cb47a-4abf-42e5-a1a4-e205a396848f\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"e42cde09-fb8b-4618-b88e-fa8b2b101a0a\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"f141619e-90b5-4980-aba8-53f1478aaaae\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"353bed55-4293-4324-bcbb-c096e60650b7\",\"type\":\"LinearScale\"}},\"id\":\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"callback\":null},\"id\":\"a45cb47a-4abf-42e5-a1a4-e205a396848f\",\"type\":\"DataRange1d\"},{\"attributes\":{\"plot\":null,\"text\":\"Life Expectancy v/s Income\"},\"id\":\"5ec7bba7-f3f6-4c52-8315-3996dbef6087\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"353bed55-4293-4324-bcbb-c096e60650b7\",\"type\":\"LinearScale\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"cc1b8086-5f09-4ab2-84ea-bbedc45c4b1b\",\"type\":\"PanTool\"},{\"id\":\"406d1c26-f00b-4c9e-936f-1176cfaf6719\",\"type\":\"WheelZoomTool\"},{\"id\":\"f3383c82-c2f6-4c56-be09-a144ed80e523\",\"type\":\"BoxZoomTool\"},{\"id\":\"771e7d52-e2f1-41c2-9037-da5596246e7d\",\"type\":\"SaveTool\"},{\"id\":\"31626562-9ed7-462e-be30-4339369fbcf2\",\"type\":\"ResetTool\"},{\"id\":\"a30f705a-cfab-40c3-922a-413f21fc3147\",\"type\":\"HelpTool\"}]},\"id\":\"462a8403-f025-4ef0-821d-6166909dcf42\",\"type\":\"Toolbar\"},{\"attributes\":{\"data_source\":{\"id\":\"b31fcc89-c164-4ec5-a9bb-ef572df5d2a3\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"1de57667-9430-46dd-b58b-d6d1a1525d22\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"cb633b40-c330-4ddc-b07c-6607f66cbd4f\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"f93fffa9-d1ee-4649-b386-017626fd4785\",\"type\":\"CDSView\"}},\"id\":\"96169a25-8e33-4825-b4ad-2e78e822d6ca\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"e42cde09-fb8b-4618-b88e-fa8b2b101a0a\",\"type\":\"LinearScale\"},{\"attributes\":{\"source\":{\"id\":\"b31fcc89-c164-4ec5-a9bb-ef572df5d2a3\",\"type\":\"ColumnDataSource\"}},\"id\":\"f93fffa9-d1ee-4649-b386-017626fd4785\",\"type\":\"CDSView\"},{\"attributes\":{\"axis_label\":\"Income ($)\",\"formatter\":{\"id\":\"b80cc99c-9754-4ca8-999b-5de266f55774\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"61d5341c-c70e-4fc7-a5b0-cc6fa71f22e5\",\"type\":\"BasicTicker\"}},\"id\":\"d0324f72-1d75-4568-92c0-25922bcd55ae\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"61d5341c-c70e-4fc7-a5b0-cc6fa71f22e5\",\"type\":\"BasicTicker\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"country\",\"year\",\"income\",\"population\",\"life_expectancy\",\"region\",\"index\"],\"data\":{\"country\":[\"Abkhazia\",\"Afghanistan\",\"Akrotiri and Dhekelia\",\"Albania\",\"Algeria\",\"American Samoa\",\"Andorra\",\"Angola\",\"Anguilla\",\"Antigua and Barbuda\",\"Argentina\",\"Armenia\",\"Aruba\",\"Australia\",\"Austria\",\"Azerbaijan\",\"Bahamas\",\"Bahrain\",\"Bangladesh\",\"Barbados\",\"Belarus\",\"Belgium\",\"Belize\",\"Benin\",\"Bermuda\",\"Bhutan\",\"Bolivia\",\"Bosnia and Herzegovina\",\"Botswana\",\"Brazil\",\"British Virgin Islands\",\"Brunei\",\"Bulgaria\",\"Burkina Faso\",\"Burundi\",\"Cambodia\",\"Cameroon\",\"Canada\",\"Cape Verde\",\"Cayman Islands\",\"Chad\",\"Channel Islands\",\"Chile\",\"China\",\"Christmas Island\",\"Cocos Island\",\"Colombia\",\"Comoros\",\"Congo, Dem. Rep.\",\"Congo, Rep.\",\"Costa Rica\",\"Cote d'Ivoire\",\"Croatia\",\"Cuba\",\"Cyprus\",\"Czechoslovakia\",\"Denmark\",\"Djibouti\",\"Dominica\",\"East Germany\",\"Ecuador\",\"Egypt\",\"El Salvador\",\"Equatorial Guinea\",\"Eritrea\",\"Eritrea and Ethiopia\",\"Estonia\",\"Ethiopia\",\"Faeroe Islands\",\"Fiji\",\"Finland\",\"France\",\"French Guiana\",\"French Polynesia\",\"Gabon\",\"Gambia\",\"Georgia\",\"Germany\",\"Ghana\",\"Gibraltar\",\"Greece\",\"Greenland\",\"Grenada\",\"Guadeloupe\",\"Guam\",\"Guatemala\",\"Guernsey\",\"Guinea\",\"Guinea-Bissau\",\"Guyana\",\"Haiti\",\"Holy See\",\"Honduras\",\"Hong Kong, China\",\"Hungary\",\"Iceland\",\"India\",\"Indonesia\",\"Iran\",\"Iraq\",\"Ireland\",\"Isle of Man\",\"Israel\",\"Italy\",\"Jamaica\",\"Japan\",\"Jersey\",\"Jordan\",\"Kazakhstan\",\"Kenya\",\"Kiribati\",\"Kosovo\",\"Kuwait\",\"Latvia\",\"Lebanon\",\"Lesotho\",\"Liberia\",\"Libya\",\"Liechtenstein\",\"Lithuania\",\"Luxembourg\",\"Macao, China\",\"Macedonia, FYR\",\"Madagascar\",\"Malawi\",\"Malaysia\",\"Maldives\",\"Mali\",\"Malta\",\"Marshall Islands\",\"Martinique\",\"Mauritania\",\"Mauritius\",\"Mayotte\",\"Mexico\",\"Micronesia, Fed. Sts.\",\"Moldova\",\"Monaco\",\"Mongolia\",\"Montenegro\",\"Montserrat\",\"Morocco\",\"Mozambique\",\"Myanmar\",\"Namibia\",\"Nauru\",\"Nepal\",\"Netherlands\",\"Netherlands Antilles\",\"New Caledonia\",\"New Zealand\",\"Nicaragua\",\"Niger\",\"Nigeria\",\"Niue\",\"Norfolk Island\",\"Northern Cyprus\",\"Northern Mariana Islands\",\"Norway\",\"Oman\",\"Pakistan\",\"Palau\",\"Panama\",\"Papua New Guinea\",\"Paraguay\",\"Peru\",\"Philippines\",\"Pitcairn\",\"Poland\",\"Portugal\",\"Puerto Rico\",\"Qatar\",\"Reunion\",\"Romania\",\"Russia\",\"Rwanda\",\"Samoa\",\"San Marino\",\"Sao Tome and Principe\",\"Saudi Arabia\",\"Senegal\",\"Serbia\",\"Serbia and Montenegro\",\"Serbia excluding Kosovo\",\"Seychelles\",\"Sierra Leone\",\"Singapore\",\"Slovak Republic\",\"Slovenia\",\"Solomon Islands\",\"Somalia\",\"Somaliland\",\"South Africa\",\"South Ossetia\",\"Spain\",\"Sri Lanka\",\"Sudan\",\"Suriname\",\"Svalbard\",\"Swaziland\",\"Sweden\",\"Switzerland\",\"Syria\",\"Taiwan\",\"Tajikistan\",\"Tanzania\",\"Thailand\",\"Timor-Leste\",\"Togo\",\"Tokelau\",\"Tonga\",\"Transnistria\",\"Trinidad and Tobago\",\"Tunisia\",\"Turkey\",\"Turkmenistan\",\"Turks and Caicos Islands\",\"Tuvalu\",\"Uganda\",\"Ukraine\",\"United Arab Emirates\",\"United Kingdom\",\"United States\",\"Uruguay\",\"USSR\",\"Uzbekistan\",\"Wallis et Futuna\",\"Vanuatu\",\"Venezuela\",\"West Bank and Gaza\",\"West Germany\",\"Western Sahara\",\"Vietnam\",\"Virgin Islands (U.S.)\",\"Yugoslavia\",\"Zambia\",\"Zimbabwe\",\"\\u00c5land\"],\"income\":{\"__ndarray__\":\"AAAAAAAA+H/e9yFPvQKTQAAAAAAAAPh/Ms6L70SSuUChOpBKKz+4QAAAAAAAAPh/AAAAAAAA+H/k8sgMlr+zQAAAAAAAAPh/kYDc/MMez0APnRO8BV3KQG8gyEFxq7FAAAAAAAAA+H8PIG1L6MLgQFouhleNZuFA8KwVaDXAwUBUvP+TKQfVQMKbyLSgqNdASE/30R1Rl0B0gp0OYvPOQD27XSc3m8ZA47JTASmA30DFUzV2E1a7QMs7YkdMxpZAAAAAAAAA+H+iUjyz1b2zQLA96EtUTq9AplVqD/utvECTGRZcJP3HQMvN6sLjsMJAAAAAAAAA+H/NdOvJX9jlQL4oIFohLMVA8204NaxJk0BCUEuyFJF8QOxNxejem5xATHxBzbU0n0BJtNIvNOHgQCHturpGAKtAAAAAAAAA+H8scML+UFeYQAAAAAAAAPh/798/LLCPyUDHoZsHuoW3QAAAAAAAAPh/AAAAAAAA+H+svmsXsbK7QBe1NLBaw49Age9x8NpsdkBFs8X6VfWtQNLepgbIp8JA4YaZUOnAl0Dv2vpxO4/LQAAAAAAAAPh/DzmfidwK2UAAAAAAAAD4f+cQIKqD599AEaUjBZIBoUDpFIjbyTTCQAAAAAAAAPh/Wc9q9XN7u0DWj2KaFxq3QKGbSCDaDrZAb5qB/Bj3zUDbI3C47SKBQAAAAAAAAPh/07j4OpHuz0Cu6vQCUWGJQAAAAAAAAPh/56kF7GRgr0Dhdr3MruLdQDRgzbe2E91AAAAAAAAA+H8AAAAAAAD4f9l58Dp/0MhAwnuQqra6iUA6PLH6skiwQBGTi3jJdd5AmtcxkcmblUAAAAAAAAD4f8BF1ACH+tpAAAAAAAAA+H84zLSacj3BQAAAAAAAAPh/AAAAAAAA+H+DcLLYOCu0QAAAAAAAAPh/KN/Ozd5mjEBrHVPujseBQAL11w/oga1Ak5L7zi64kkAAAAAAAAD4f+f4i+jpIqtAahrdj8wV40A1FCLospXQQPkaUjm3FeFAyPm9hUZWpUCnfMEfKNStQH/EVHbH7sZAT46Dwl18q0BIoMtZnm3hQAAAAAAAAPh/tialdezd2EBQ536dJYzZQAmTaSK9b7tAABlUoSv83EAAAAAAAAD4f+xCif5k9bNA20QFBSW6xEBDX5FOIlaXQBlt+A6c+qhAAAAAAAAA+H+YiOEBcbnkQEY/wwj4bslAtmRqFhvvyEBnpkLrlcWXQD/DdWtYrn1Au6mRzc+Jx0AAAAAAAAD4f9ArNRJkKM1Aqj6rSpdM8UAAAAAAAAD4f+XLxb5lVsBA4kKUqjx3j0B3TKl01hKLQHZNX0fWMchAUYi2j8nZs0CC4vHossCRQDxD9T3209RAAAAAAAAA+H8AAAAAAAD4f0R+8wh7v5tAI6BRocNJxkAAAAAAAAD4f0d3NgIv+cVAAAAAAAAA+H8kFnRk1UKkQAAAAAAAAPh/DtdNP1gKqUAAAAAAAAD4fwAAAAAAAPh/H5Zcq+1CsED2N0itNMWLQCGMDozJe5BAJqyMt0JYs0AAAAAAAAD4f5QKQj/pIpNAK5iLCFGd4UAAAAAAAAD4fwAAAAAAAPh/O3D4o11y10CSyWPMyT6kQHZhcdofG4RA96FwNvPdoEAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H8AAAAAAAD4f/RpnaFRZedApbWcrTZF1kDnIris0FakQAAAAAAAAPh/g7IJBVcWxUCX5T2JoWyeQLjT6d2ZrK9APJ+QGfmyvkDyGqcK7wepQAAAAAAAAPh/8lEld3MU0ECJkeKKm27TQAAAAAAAAPh/WvYMh6QZ8kAAAAAAAAD4f06I/SEPOsVAuHCBZGCcykAzEESTIBqPQOHn0Pqai7NAAAAAAAAA+H8FOTsrtJ2aQC2XPpGLpNRA4RfSGzeQmkA3lhfsm4rDQAAAAAAAAPh/AAAAAAAA+H90OVIzksbNQGtKR7TO7ItA5VEAXcFA5UD00cT0gLzSQIiXRnyNMthAbrg7hb2+nUAAAAAAAAD4fwAAAAAAAPh/I4UXMKLawUAAAAAAAAD4f5MN2E/7LtpA2mpAWyGesEArgI9RNrWlQEpaqzeEA8BAAAAAAAAA+H/RmiqBLniyQGgsHl4tRd9AEWd4TX2O4kBisIqJ/R+xQFxQLpkksttA68NQvYO9m0A0DyhRABGTQCmFNvAr0LxAdfrBAVtXo0BUvzH6FMCLQAAAAAAAAPh/Dv1SNQ7ws0AAAAAAAAD4f2clYOWCaNFAVEX9XZtLvUAzlVCqyGi/QF0JXnKoRrZAAAAAAAAA+H8AAAAAAAD4fxbRRJ0hypJArB6jad1itkAhzVkx3njgQIzU9xqeUN5AlPTRrgIl5EA11F12hGLGQAAAAAAAAPh/BnLQRe01pEAAAAAAAAD4f3Lrdv2Yzq5A6NGDzPN0xUAAAAAAAAD4fwAAAAAAAPh/AAAAAAAA+H/hGx2Rru6kQAAAAAAAAPh/AAAAAAAA+H8kqDlOQIiWQDiayjDTu3tAAAAAAAAA+H8=\",\"dtype\":\"float64\",\"shape\":[238]},\"index\":[17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849],\"life_expectancy\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[238]},\"population\":[\"0.0\",\"27207291.0\",\"0.0\",\"2929886.0\",\"35401790.0\",\"56226.0\",\"85474.0\",\"20520103.0\",\"13571.0\",\"86300.0\",\"40798641.0\",\"2966108.0\",\"101416.0\",\"21770690.0\",\"8361362.0\",\"8980488.0\",\"354780.0\",\"1196774.0\",\"149905836.0\",\"278466.0\",\"9505319.0\",\"10854388.0\",\"313925.0\",\"9240982.0\",\"64306.0\",\"707830.0\",\"9758799.0\",\"3837732.0\",\"2007212.0\",\"196701298.0\",\"26450.0\",\"387080.0\",\"7460057.0\",\"15165856.0\",\"9137786.0\",\"14144337.0\",\"20074522.0\",\"33746559.0\",\"486673.0\",\"54285.0\",\"11510535.0\",\"158613.0\",\"16829957.0\",\"1333807063.0\",\"1400.0\",\"596.0\",\"45416276.0\",\"681845.0\",\"63845097.0\",\"3950786.0\",\"4488261.0\",\"19684909.0\",\"4330399.0\",\"11297442.0\",\"1090486.0\",\"0.0\",\"5523755.0\",\"820097.0\",\"70995.0\",\"0.0\",\"14691310.0\",\"80442443.0\",\"6021368.0\",\"707155.0\",\"4593549.0\",\"0.0\",\"1336013.0\",\"85302099.0\",\"48613.0\",\"851854.0\",\"5340485.0\",\"62640901.0\",\"227731.0\",\"265412.0\",\"1507428.0\",\"1638899.0\",\"4298591.0\",\"80519685.0\",\"23713164.0\",\"30407.0\",\"11179425.0\",\"56663.0\",\"104298.0\",\"455536.0\",\"158621.0\",\"14418033.0\",\"0.0\",\"10715770.0\",\"1596832.0\",\"750749.0\",\"9852953.0\",\"799.0\",\"7383098.0\",\"6949275.0\",\"10034951.0\",\"314336.0\",\"1214182182.0\",\"238465165.0\",\"73370982.0\",\"29970634.0\",\"4558603.0\",\"83548.0\",\"7262964.0\",\"59467196.0\",\"2729575.0\",\"127340884.0\",\"0.0\",\"6266865.0\",\"16098356.0\",\"39269988.0\",\"100566.0\",\"0.0\",\"2881243.0\",\"2117307.0\",\"4181742.0\",\"1990413.0\",\"3821498.0\",\"6208680.0\",\"36004.0\",\"3172436.0\",\"496257.0\",\"521405.0\",\"2058920.0\",\"20495706.0\",\"14329056.0\",\"27661017.0\",\"326713.0\",\"14694565.0\",\"409475.0\",\"52321.0\",\"395138.0\",\"3501927.0\",\"1242954.0\",\"202503.0\",\"116815612.0\",\"103961.0\",\"4095813.0\",\"36351.0\",\"2669572.0\",\"620870.0\",\"4922.0\",\"31714958.0\",\"23647815.0\",\"51369725.0\",\"2152357.0\",\"10028.0\",\"26592666.0\",\"16575173.0\",\"198037.0\",\"242891.0\",\"4329124.0\",\"5666595.0\",\"15672194.0\",\"155207145.0\",\"1627.0\",\"0.0\",\"0.0\",\"55276.0\",\"4830371.0\",\"2762073.0\",\"166520983.0\",\"20344.0\",\"3559401.0\",\"6693799.0\",\"6127847.0\",\"29001563.0\",\"91641881.0\",\"50.0\",\"38551489.0\",\"10590260.0\",\"3718473.0\",\"1591151.0\",\"823691.0\",\"20510263.0\",\"143126660.0\",\"10024594.0\",\"184700.0\",\"30431.0\",\"167196.0\",\"27409491.0\",\"12581624.0\",\"9087019.0\",\"0.0\",\"0.0\",\"92360.0\",\"5647194.0\",\"4965105.0\",\"5401951.0\",\"2042804.0\",\"514767.0\",\"9356827.0\",\"0.0\",\"50992034.0\",\"0.0\",\"46295191.0\",\"20078873.0\",\"35297298.0\",\"512522.0\",\"0.0\",\"1173529.0\",\"9303432.0\",\"7737316.0\",\"20566871.0\",\"22974000.0\",\"7414960.0\",\"44222113.0\",\"66548197.0\",\"1041827.0\",\"6219761.0\",\"1129.0\",\"103416.0\",\"0.0\",\"1321624.0\",\"10522214.0\",\"71261307.0\",\"4978960.0\",\"30247.0\",\"9808.0\",\"32067125.0\",\"45830711.0\",\"7705423.0\",\"62221164.0\",\"307231961.0\",\"3362761.0\",\"0.0\",\"27338109.0\",\"13697.0\",\"230782.0\",\"28558607.0\",\"3959988.0\",\"0.0\",\"497986.0\",\"87449021.0\",\"106590.0\",\"0.0\",\"13507849.0\",\"13720997.0\",\"26923.0\"],\"region\":[\"Other\",\"Asia\",\"Other\",\"Europe\",\"Africa\",\"Oceania\",\"Europe\",\"Africa\",\"Americas\",\"Americas\",\"Americas\",\"Asia\",\"Americas\",\"Oceania\",\"Europe\",\"Asia\",\"Americas\",\"Asia\",\"Asia\",\"Americas\",\"Europe\",\"Europe\",\"Americas\",\"Africa\",\"Americas\",\"Asia\",\"Americas\",\"Europe\",\"Africa\",\"Americas\",\"Americas\",\"Asia\",\"Europe\",\"Africa\",\"Africa\",\"Asia\",\"Africa\",\"Americas\",\"Africa\",\"Americas\",\"Africa\",\"Other\",\"Americas\",\"Asia\",\"Oceania\",\"Other\",\"Americas\",\"Africa\",\"Other\",\"Other\",\"Americas\",\"Other\",\"Europe\",\"Americas\",\"Europe\",\"Other\",\"Europe\",\"Africa\",\"Americas\",\"Other\",\"Americas\",\"Africa\",\"Americas\",\"Africa\",\"Africa\",\"Other\",\"Europe\",\"Africa\",\"Other\",\"Oceania\",\"Europe\",\"Europe\",\"Americas\",\"Oceania\",\"Africa\",\"Africa\",\"Asia\",\"Europe\",\"Africa\",\"Europe\",\"Europe\",\"Americas\",\"Americas\",\"Americas\",\"Oceania\",\"Americas\",\"Europe\",\"Africa\",\"Africa\",\"Americas\",\"Americas\",\"Other\",\"Americas\",\"Other\",\"Europe\",\"Europe\",\"Asia\",\"Asia\",\"Asia\",\"Asia\",\"Europe\",\"Europe\",\"Asia\",\"Europe\",\"Americas\",\"Asia\",\"Europe\",\"Asia\",\"Asia\",\"Africa\",\"Oceania\",\"Europe\",\"Asia\",\"Europe\",\"Asia\",\"Africa\",\"Africa\",\"Africa\",\"Europe\",\"Europe\",\"Europe\",\"Other\",\"Other\",\"Africa\",\"Africa\",\"Asia\",\"Asia\",\"Africa\",\"Europe\",\"Oceania\",\"Americas\",\"Africa\",\"Africa\",\"Africa\",\"Americas\",\"Other\",\"Europe\",\"Europe\",\"Asia\",\"Europe\",\"Americas\",\"Africa\",\"Africa\",\"Asia\",\"Africa\",\"Oceania\",\"Asia\",\"Europe\",\"Other\",\"Oceania\",\"Oceania\",\"Americas\",\"Africa\",\"Africa\",\"Oceania\",\"Oceania\",\"Other\",\"Oceania\",\"Europe\",\"Asia\",\"Asia\",\"Oceania\",\"Americas\",\"Oceania\",\"Americas\",\"Americas\",\"Asia\",\"Other\",\"Europe\",\"Europe\",\"Americas\",\"Asia\",\"Other\",\"Europe\",\"Europe\",\"Africa\",\"Oceania\",\"Europe\",\"Other\",\"Asia\",\"Africa\",\"Europe\",\"Other\",\"Other\",\"Africa\",\"Africa\",\"Asia\",\"Other\",\"Europe\",\"Oceania\",\"Africa\",\"Other\",\"Africa\",\"Other\",\"Europe\",\"Asia\",\"Africa\",\"Americas\",\"Other\",\"Africa\",\"Europe\",\"Europe\",\"Asia\",\"Asia\",\"Asia\",\"Africa\",\"Asia\",\"Asia\",\"Africa\",\"Oceania\",\"Oceania\",\"Other\",\"Americas\",\"Africa\",\"Asia\",\"Asia\",\"Americas\",\"Oceania\",\"Africa\",\"Europe\",\"Asia\",\"Europe\",\"Americas\",\"Americas\",\"Other\",\"Asia\",\"Other\",\"Oceania\",\"Americas\",\"Other\",\"Other\",\"Africa\",\"Asia\",\"Other\",\"Other\",\"Africa\",\"Africa\",\"Other\"],\"year\":[\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\"]}},\"id\":\"b31fcc89-c164-4ec5-a9bb-ef572df5d2a3\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"plot\":{\"id\":\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"61d5341c-c70e-4fc7-a5b0-cc6fa71f22e5\",\"type\":\"BasicTicker\"}},\"id\":\"a114495d-eb5f-4176-a5dc-54d34d19e8fe\",\"type\":\"Grid\"},{\"attributes\":{\"axis_label\":\"Life Expectancy (Years)\",\"formatter\":{\"id\":\"3629c002-48df-4a83-9926-b799bd5fbf9d\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"08e65bd8-7cbf-483c-93dc-a9a13be35724\",\"type\":\"BasicTicker\"}},\"id\":\"4630cd27-768c-4e0b-b4e8-22c6640b69de\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"08e65bd8-7cbf-483c-93dc-a9a13be35724\",\"type\":\"BasicTicker\"}],\"root_ids\":[\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.13\"}};\n",
" var render_items = [{\"docid\":\"f7f23995-b40d-4173-941d-776c2ee3c850\",\"elementid\":\"05de81ca-f0d6-4b7f-9728-54406f5f361a\",\"modelid\":\"e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3\"}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" clearInterval(timer);\n",
" }\n",
" attempts++;\n",
" if (attempts > 100) {\n",
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n",
" clearInterval(timer);\n",
" }\n",
" }, 10, root)\n",
" }\n",
"})(window);"
],
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "e4e531ba-d84b-44ea-a7cc-5a505ce5c0f3"
}
},
"output_type": "display_data"
}
],
"source": [
"p = figure(height = 500, title = 'Life Expectancy v/s Income', \n",
" x_axis_label = 'Income ($)', y_axis_label = 'Life Expectancy (Years)')\n",
"\n",
"p.circle( x= 'income', y = 'life_expectancy', source = source, size = 15, \n",
" fill_color = '#f98d77', fill_alpha = 0.5, line_color = '#e65c6f')\n",
"\n",
"show(p)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"'''import some tools for enhancing the plot as well as a color palette'''\n",
"from bokeh.models import HoverTool, LinearInterpolator, CategoricalColorMapper\n",
"from bokeh.palettes import Spectral6"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"<div class=\"bk-root\">\n",
" <div class=\"bk-plotdiv\" id=\"a54e9693-ce1e-49af-af8f-a8b606702aaa\"></div>\n",
"</div>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"(function(root) {\n",
" function embed_document(root) {\n",
" \n",
" var docs_json = {\"5413a69b-2af4-4034-b62a-06203567cafa\":{\"roots\":{\"references\":[{\"attributes\":{\"source\":{\"id\":\"b31fcc89-c164-4ec5-a9bb-ef572df5d2a3\",\"type\":\"ColumnDataSource\"}},\"id\":\"7f412c46-f532-4b26-8b6f-bb5d81147694\",\"type\":\"CDSView\"},{\"attributes\":{\"callback\":null},\"id\":\"58a82071-d346-4aac-bc8e-3fd34f806df2\",\"type\":\"DataRange1d\"},{\"attributes\":{\"below\":[{\"id\":\"0a596117-c1d9-4df3-9b9e-e36076e636a4\",\"type\":\"LinearAxis\"}],\"left\":[{\"id\":\"21c8fa8a-fa8a-4daa-bd80-2b1cf249d60f\",\"type\":\"LinearAxis\"}],\"plot_height\":500,\"plot_width\":700,\"renderers\":[{\"id\":\"0a596117-c1d9-4df3-9b9e-e36076e636a4\",\"type\":\"LinearAxis\"},{\"id\":\"dc86ff79-182a-4fef-9690-6b237ba5fe23\",\"type\":\"Grid\"},{\"id\":\"21c8fa8a-fa8a-4daa-bd80-2b1cf249d60f\",\"type\":\"LinearAxis\"},{\"id\":\"8ae875d0-c9c0-44ec-a726-3fe091de3937\",\"type\":\"Grid\"},{\"id\":\"c38f4f9e-5eff-4c4c-8d3e-78042f0673c6\",\"type\":\"Legend\"},{\"id\":\"dd655242-6693-4aba-932c-ce62436f4555\",\"type\":\"GlyphRenderer\"}],\"title\":{\"id\":\"3bb1ecc2-853d-4a1d-b893-f54014d7bcab\",\"type\":\"Title\"},\"toolbar\":{\"id\":\"8090b67f-ac97-4e92-8b3a-baea08dc75fb\",\"type\":\"Toolbar\"},\"x_range\":{\"id\":\"58a82071-d346-4aac-bc8e-3fd34f806df2\",\"type\":\"DataRange1d\"},\"x_scale\":{\"id\":\"5443ec42-6231-4acb-bd3c-d74bc36e011e\",\"type\":\"LinearScale\"},\"y_range\":{\"id\":\"5fd5e9ca-98af-44f7-81af-056ca349eff3\",\"type\":\"DataRange1d\"},\"y_scale\":{\"id\":\"393dd647-6d31-4db1-811f-965d08a0ceae\",\"type\":\"LinearScale\"}},\"id\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"axis_label\":\"Life Expectancy (Years)\",\"formatter\":{\"id\":\"871a40f7-24ef-4365-805f-a13eaa81f142\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d3affb86-fbf0-4c88-883a-19128eee1f2e\",\"type\":\"BasicTicker\"}},\"id\":\"21c8fa8a-fa8a-4daa-bd80-2b1cf249d60f\",\"type\":\"LinearAxis\"},{\"attributes\":{\"callback\":null,\"tooltips\":[[\"Country\",\"@country\"],[\"Population\",\"@population\"],[\"Region\",\"@region\"]]},\"id\":\"c6a2dcc7-608f-4fda-b82d-5fe3c44d2979\",\"type\":\"HoverTool\"},{\"attributes\":{\"label\":{\"field\":\"region\"},\"renderers\":[{\"id\":\"dd655242-6693-4aba-932c-ce62436f4555\",\"type\":\"GlyphRenderer\"}]},\"id\":\"d39d82ba-11ef-4ef1-be8e-83686742d8e1\",\"type\":\"LegendItem\"},{\"attributes\":{\"items\":[{\"id\":\"d39d82ba-11ef-4ef1-be8e-83686742d8e1\",\"type\":\"LegendItem\"}],\"location\":[512,10],\"plot\":{\"id\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\",\"subtype\":\"Figure\",\"type\":\"Plot\"}},\"id\":\"c38f4f9e-5eff-4c4c-8d3e-78042f0673c6\",\"type\":\"Legend\"},{\"attributes\":{},\"id\":\"91049d3e-2e15-41b7-b277-07f9b65cf5b3\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"plot\":null,\"text\":\"Life Expectancy v/s Income in 2009\"},\"id\":\"3bb1ecc2-853d-4a1d-b893-f54014d7bcab\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"393dd647-6d31-4db1-811f-965d08a0ceae\",\"type\":\"LinearScale\"},{\"attributes\":{\"plot\":{\"id\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5263e8f9-6747-40f7-9566-fa85dcaff4fa\",\"type\":\"BasicTicker\"}},\"id\":\"dc86ff79-182a-4fef-9690-6b237ba5fe23\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"d3affb86-fbf0-4c88-883a-19128eee1f2e\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"5443ec42-6231-4acb-bd3c-d74bc36e011e\",\"type\":\"LinearScale\"},{\"attributes\":{\"callback\":null},\"id\":\"5fd5e9ca-98af-44f7-81af-056ca349eff3\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis_label\":\"Income ($)\",\"formatter\":{\"id\":\"91049d3e-2e15-41b7-b277-07f9b65cf5b3\",\"type\":\"BasicTickFormatter\"},\"plot\":{\"id\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"5263e8f9-6747-40f7-9566-fa85dcaff4fa\",\"type\":\"BasicTicker\"}},\"id\":\"0a596117-c1d9-4df3-9b9e-e36076e636a4\",\"type\":\"LinearAxis\"},{\"attributes\":{\"data_source\":{\"id\":\"b31fcc89-c164-4ec5-a9bb-ef572df5d2a3\",\"type\":\"ColumnDataSource\"},\"glyph\":{\"id\":\"286938f6-9705-41d3-a930-bce9e8906731\",\"type\":\"Circle\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"7747d87f-dee7-4fb3-8931-8ed244f53dc0\",\"type\":\"Circle\"},\"selection_glyph\":null,\"view\":{\"id\":\"7f412c46-f532-4b26-8b6f-bb5d81147694\",\"type\":\"CDSView\"}},\"id\":\"dd655242-6693-4aba-932c-ce62436f4555\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"dimension\":1,\"plot\":{\"id\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\",\"subtype\":\"Figure\",\"type\":\"Plot\"},\"ticker\":{\"id\":\"d3affb86-fbf0-4c88-883a-19128eee1f2e\",\"type\":\"BasicTicker\"}},\"id\":\"8ae875d0-c9c0-44ec-a726-3fe091de3937\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"5263e8f9-6747-40f7-9566-fa85dcaff4fa\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"871a40f7-24ef-4365-805f-a13eaa81f142\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"value\":\"#1f77b4\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"field\":\"population\",\"transform\":{\"id\":\"c8b88f02-de35-4fce-a540-1cbb9e992aec\",\"type\":\"LinearInterpolator\"},\"units\":\"screen\"},\"x\":{\"field\":\"income\"},\"y\":{\"field\":\"life_expectancy\"}},\"id\":\"7747d87f-dee7-4fb3-8931-8ed244f53dc0\",\"type\":\"Circle\"},{\"attributes\":{\"callback\":null,\"column_names\":[\"country\",\"year\",\"income\",\"population\",\"life_expectancy\",\"region\",\"index\"],\"data\":{\"country\":[\"Abkhazia\",\"Afghanistan\",\"Akrotiri and Dhekelia\",\"Albania\",\"Algeria\",\"American Samoa\",\"Andorra\",\"Angola\",\"Anguilla\",\"Antigua and Barbuda\",\"Argentina\",\"Armenia\",\"Aruba\",\"Australia\",\"Austria\",\"Azerbaijan\",\"Bahamas\",\"Bahrain\",\"Bangladesh\",\"Barbados\",\"Belarus\",\"Belgium\",\"Belize\",\"Benin\",\"Bermuda\",\"Bhutan\",\"Bolivia\",\"Bosnia and Herzegovina\",\"Botswana\",\"Brazil\",\"British Virgin Islands\",\"Brunei\",\"Bulgaria\",\"Burkina Faso\",\"Burundi\",\"Cambodia\",\"Cameroon\",\"Canada\",\"Cape Verde\",\"Cayman Islands\",\"Chad\",\"Channel Islands\",\"Chile\",\"China\",\"Christmas Island\",\"Cocos Island\",\"Colombia\",\"Comoros\",\"Congo, Dem. Rep.\",\"Congo, Rep.\",\"Costa Rica\",\"Cote d'Ivoire\",\"Croatia\",\"Cuba\",\"Cyprus\",\"Czechoslovakia\",\"Denmark\",\"Djibouti\",\"Dominica\",\"East Germany\",\"Ecuador\",\"Egypt\",\"El Salvador\",\"Equatorial Guinea\",\"Eritrea\",\"Eritrea and Ethiopia\",\"Estonia\",\"Ethiopia\",\"Faeroe Islands\",\"Fiji\",\"Finland\",\"France\",\"French Guiana\",\"French Polynesia\",\"Gabon\",\"Gambia\",\"Georgia\",\"Germany\",\"Ghana\",\"Gibraltar\",\"Greece\",\"Greenland\",\"Grenada\",\"Guadeloupe\",\"Guam\",\"Guatemala\",\"Guernsey\",\"Guinea\",\"Guinea-Bissau\",\"Guyana\",\"Haiti\",\"Holy See\",\"Honduras\",\"Hong Kong, China\",\"Hungary\",\"Iceland\",\"India\",\"Indonesia\",\"Iran\",\"Iraq\",\"Ireland\",\"Isle of Man\",\"Israel\",\"Italy\",\"Jamaica\",\"Japan\",\"Jersey\",\"Jordan\",\"Kazakhstan\",\"Kenya\",\"Kiribati\",\"Kosovo\",\"Kuwait\",\"Latvia\",\"Lebanon\",\"Lesotho\",\"Liberia\",\"Libya\",\"Liechtenstein\",\"Lithuania\",\"Luxembourg\",\"Macao, China\",\"Macedonia, FYR\",\"Madagascar\",\"Malawi\",\"Malaysia\",\"Maldives\",\"Mali\",\"Malta\",\"Marshall Islands\",\"Martinique\",\"Mauritania\",\"Mauritius\",\"Mayotte\",\"Mexico\",\"Micronesia, Fed. Sts.\",\"Moldova\",\"Monaco\",\"Mongolia\",\"Montenegro\",\"Montserrat\",\"Morocco\",\"Mozambique\",\"Myanmar\",\"Namibia\",\"Nauru\",\"Nepal\",\"Netherlands\",\"Netherlands Antilles\",\"New Caledonia\",\"New Zealand\",\"Nicaragua\",\"Niger\",\"Nigeria\",\"Niue\",\"Norfolk Island\",\"Northern Cyprus\",\"Northern Mariana Islands\",\"Norway\",\"Oman\",\"Pakistan\",\"Palau\",\"Panama\",\"Papua New Guinea\",\"Paraguay\",\"Peru\",\"Philippines\",\"Pitcairn\",\"Poland\",\"Portugal\",\"Puerto Rico\",\"Qatar\",\"Reunion\",\"Romania\",\"Russia\",\"Rwanda\",\"Samoa\",\"San Marino\",\"Sao Tome and Principe\",\"Saudi Arabia\",\"Senegal\",\"Serbia\",\"Serbia and Montenegro\",\"Serbia excluding Kosovo\",\"Seychelles\",\"Sierra Leone\",\"Singapore\",\"Slovak Republic\",\"Slovenia\",\"Solomon Islands\",\"Somalia\",\"Somaliland\",\"South Africa\",\"South Ossetia\",\"Spain\",\"Sri Lanka\",\"Sudan\",\"Suriname\",\"Svalbard\",\"Swaziland\",\"Sweden\",\"Switzerland\",\"Syria\",\"Taiwan\",\"Tajikistan\",\"Tanzania\",\"Thailand\",\"Timor-Leste\",\"Togo\",\"Tokelau\",\"Tonga\",\"Transnistria\",\"Trinidad and Tobago\",\"Tunisia\",\"Turkey\",\"Turkmenistan\",\"Turks and Caicos Islands\",\"Tuvalu\",\"Uganda\",\"Ukraine\",\"United Arab Emirates\",\"United Kingdom\",\"United States\",\"Uruguay\",\"USSR\",\"Uzbekistan\",\"Wallis et Futuna\",\"Vanuatu\",\"Venezuela\",\"West Bank and Gaza\",\"West Germany\",\"Western Sahara\",\"Vietnam\",\"Virgin Islands (U.S.)\",\"Yugoslavia\",\"Zambia\",\"Zimbabwe\",\"\\u00c5land\"],\"income\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[238]},\"index\":[17612,17613,17614,17615,17616,17617,17618,17619,17620,17621,17622,17623,17624,17625,17626,17627,17628,17629,17630,17631,17632,17633,17634,17635,17636,17637,17638,17639,17640,17641,17642,17643,17644,17645,17646,17647,17648,17649,17650,17651,17652,17653,17654,17655,17656,17657,17658,17659,17660,17661,17662,17663,17664,17665,17666,17667,17668,17669,17670,17671,17672,17673,17674,17675,17676,17677,17678,17679,17680,17681,17682,17683,17684,17685,17686,17687,17688,17689,17690,17691,17692,17693,17694,17695,17696,17697,17698,17699,17700,17701,17702,17703,17704,17705,17706,17707,17708,17709,17710,17711,17712,17713,17714,17715,17716,17717,17718,17719,17720,17721,17722,17723,17724,17725,17726,17727,17728,17729,17730,17731,17732,17733,17734,17735,17736,17737,17738,17739,17740,17741,17742,17743,17744,17745,17746,17747,17748,17749,17750,17751,17752,17753,17754,17755,17756,17757,17758,17759,17760,17761,17762,17763,17764,17765,17766,17767,17768,17769,17770,17771,17772,17773,17774,17775,17776,17777,17778,17779,17780,17781,17782,17783,17784,17785,17786,17787,17788,17789,17790,17791,17792,17793,17794,17795,17796,17797,17798,17799,17800,17801,17802,17803,17804,17805,17806,17807,17808,17809,17810,17811,17812,17813,17814,17815,17816,17817,17818,17819,17820,17821,17822,17823,17824,17825,17826,17827,17828,17829,17830,17831,17832,17833,17834,17835,17836,17837,17838,17839,17840,17841,17842,17843,17844,17845,17846,17847,17848,17849],\"life_expectancy\":{\"__ndarray__\":\"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\",\"dtype\":\"float64\",\"shape\":[238]},\"population\":[\"0.0\",\"27207291.0\",\"0.0\",\"2929886.0\",\"35401790.0\",\"56226.0\",\"85474.0\",\"20520103.0\",\"13571.0\",\"86300.0\",\"40798641.0\",\"2966108.0\",\"101416.0\",\"21770690.0\",\"8361362.0\",\"8980488.0\",\"354780.0\",\"1196774.0\",\"149905836.0\",\"278466.0\",\"9505319.0\",\"10854388.0\",\"313925.0\",\"9240982.0\",\"64306.0\",\"707830.0\",\"9758799.0\",\"3837732.0\",\"2007212.0\",\"196701298.0\",\"26450.0\",\"387080.0\",\"7460057.0\",\"15165856.0\",\"9137786.0\",\"14144337.0\",\"20074522.0\",\"33746559.0\",\"486673.0\",\"54285.0\",\"11510535.0\",\"158613.0\",\"16829957.0\",\"1333807063.0\",\"1400.0\",\"596.0\",\"45416276.0\",\"681845.0\",\"63845097.0\",\"3950786.0\",\"4488261.0\",\"19684909.0\",\"4330399.0\",\"11297442.0\",\"1090486.0\",\"0.0\",\"5523755.0\",\"820097.0\",\"70995.0\",\"0.0\",\"14691310.0\",\"80442443.0\",\"6021368.0\",\"707155.0\",\"4593549.0\",\"0.0\",\"1336013.0\",\"85302099.0\",\"48613.0\",\"851854.0\",\"5340485.0\",\"62640901.0\",\"227731.0\",\"265412.0\",\"1507428.0\",\"1638899.0\",\"4298591.0\",\"80519685.0\",\"23713164.0\",\"30407.0\",\"11179425.0\",\"56663.0\",\"104298.0\",\"455536.0\",\"158621.0\",\"14418033.0\",\"0.0\",\"10715770.0\",\"1596832.0\",\"750749.0\",\"9852953.0\",\"799.0\",\"7383098.0\",\"6949275.0\",\"10034951.0\",\"314336.0\",\"1214182182.0\",\"238465165.0\",\"73370982.0\",\"29970634.0\",\"4558603.0\",\"83548.0\",\"7262964.0\",\"59467196.0\",\"2729575.0\",\"127340884.0\",\"0.0\",\"6266865.0\",\"16098356.0\",\"39269988.0\",\"100566.0\",\"0.0\",\"2881243.0\",\"2117307.0\",\"4181742.0\",\"1990413.0\",\"3821498.0\",\"6208680.0\",\"36004.0\",\"3172436.0\",\"496257.0\",\"521405.0\",\"2058920.0\",\"20495706.0\",\"14329056.0\",\"27661017.0\",\"326713.0\",\"14694565.0\",\"409475.0\",\"52321.0\",\"395138.0\",\"3501927.0\",\"1242954.0\",\"202503.0\",\"116815612.0\",\"103961.0\",\"4095813.0\",\"36351.0\",\"2669572.0\",\"620870.0\",\"4922.0\",\"31714958.0\",\"23647815.0\",\"51369725.0\",\"2152357.0\",\"10028.0\",\"26592666.0\",\"16575173.0\",\"198037.0\",\"242891.0\",\"4329124.0\",\"5666595.0\",\"15672194.0\",\"155207145.0\",\"1627.0\",\"0.0\",\"0.0\",\"55276.0\",\"4830371.0\",\"2762073.0\",\"166520983.0\",\"20344.0\",\"3559401.0\",\"6693799.0\",\"6127847.0\",\"29001563.0\",\"91641881.0\",\"50.0\",\"38551489.0\",\"10590260.0\",\"3718473.0\",\"1591151.0\",\"823691.0\",\"20510263.0\",\"143126660.0\",\"10024594.0\",\"184700.0\",\"30431.0\",\"167196.0\",\"27409491.0\",\"12581624.0\",\"9087019.0\",\"0.0\",\"0.0\",\"92360.0\",\"5647194.0\",\"4965105.0\",\"5401951.0\",\"2042804.0\",\"514767.0\",\"9356827.0\",\"0.0\",\"50992034.0\",\"0.0\",\"46295191.0\",\"20078873.0\",\"35297298.0\",\"512522.0\",\"0.0\",\"1173529.0\",\"9303432.0\",\"7737316.0\",\"20566871.0\",\"22974000.0\",\"7414960.0\",\"44222113.0\",\"66548197.0\",\"1041827.0\",\"6219761.0\",\"1129.0\",\"103416.0\",\"0.0\",\"1321624.0\",\"10522214.0\",\"71261307.0\",\"4978960.0\",\"30247.0\",\"9808.0\",\"32067125.0\",\"45830711.0\",\"7705423.0\",\"62221164.0\",\"307231961.0\",\"3362761.0\",\"0.0\",\"27338109.0\",\"13697.0\",\"230782.0\",\"28558607.0\",\"3959988.0\",\"0.0\",\"497986.0\",\"87449021.0\",\"106590.0\",\"0.0\",\"13507849.0\",\"13720997.0\",\"26923.0\"],\"region\":[\"Other\",\"Asia\",\"Other\",\"Europe\",\"Africa\",\"Oceania\",\"Europe\",\"Africa\",\"Americas\",\"Americas\",\"Americas\",\"Asia\",\"Americas\",\"Oceania\",\"Europe\",\"Asia\",\"Americas\",\"Asia\",\"Asia\",\"Americas\",\"Europe\",\"Europe\",\"Americas\",\"Africa\",\"Americas\",\"Asia\",\"Americas\",\"Europe\",\"Africa\",\"Americas\",\"Americas\",\"Asia\",\"Europe\",\"Africa\",\"Africa\",\"Asia\",\"Africa\",\"Americas\",\"Africa\",\"Americas\",\"Africa\",\"Other\",\"Americas\",\"Asia\",\"Oceania\",\"Other\",\"Americas\",\"Africa\",\"Other\",\"Other\",\"Americas\",\"Other\",\"Europe\",\"Americas\",\"Europe\",\"Other\",\"Europe\",\"Africa\",\"Americas\",\"Other\",\"Americas\",\"Africa\",\"Americas\",\"Africa\",\"Africa\",\"Other\",\"Europe\",\"Africa\",\"Other\",\"Oceania\",\"Europe\",\"Europe\",\"Americas\",\"Oceania\",\"Africa\",\"Africa\",\"Asia\",\"Europe\",\"Africa\",\"Europe\",\"Europe\",\"Americas\",\"Americas\",\"Americas\",\"Oceania\",\"Americas\",\"Europe\",\"Africa\",\"Africa\",\"Americas\",\"Americas\",\"Other\",\"Americas\",\"Other\",\"Europe\",\"Europe\",\"Asia\",\"Asia\",\"Asia\",\"Asia\",\"Europe\",\"Europe\",\"Asia\",\"Europe\",\"Americas\",\"Asia\",\"Europe\",\"Asia\",\"Asia\",\"Africa\",\"Oceania\",\"Europe\",\"Asia\",\"Europe\",\"Asia\",\"Africa\",\"Africa\",\"Africa\",\"Europe\",\"Europe\",\"Europe\",\"Other\",\"Other\",\"Africa\",\"Africa\",\"Asia\",\"Asia\",\"Africa\",\"Europe\",\"Oceania\",\"Americas\",\"Africa\",\"Africa\",\"Africa\",\"Americas\",\"Other\",\"Europe\",\"Europe\",\"Asia\",\"Europe\",\"Americas\",\"Africa\",\"Africa\",\"Asia\",\"Africa\",\"Oceania\",\"Asia\",\"Europe\",\"Other\",\"Oceania\",\"Oceania\",\"Americas\",\"Africa\",\"Africa\",\"Oceania\",\"Oceania\",\"Other\",\"Oceania\",\"Europe\",\"Asia\",\"Asia\",\"Oceania\",\"Americas\",\"Oceania\",\"Americas\",\"Americas\",\"Asia\",\"Other\",\"Europe\",\"Europe\",\"Americas\",\"Asia\",\"Other\",\"Europe\",\"Europe\",\"Africa\",\"Oceania\",\"Europe\",\"Other\",\"Asia\",\"Africa\",\"Europe\",\"Other\",\"Other\",\"Africa\",\"Africa\",\"Asia\",\"Other\",\"Europe\",\"Oceania\",\"Africa\",\"Other\",\"Africa\",\"Other\",\"Europe\",\"Asia\",\"Africa\",\"Americas\",\"Other\",\"Africa\",\"Europe\",\"Europe\",\"Asia\",\"Asia\",\"Asia\",\"Africa\",\"Asia\",\"Asia\",\"Africa\",\"Oceania\",\"Oceania\",\"Other\",\"Americas\",\"Africa\",\"Asia\",\"Asia\",\"Americas\",\"Oceania\",\"Africa\",\"Europe\",\"Asia\",\"Europe\",\"Americas\",\"Americas\",\"Other\",\"Asia\",\"Other\",\"Oceania\",\"Americas\",\"Other\",\"Other\",\"Africa\",\"Asia\",\"Other\",\"Other\",\"Africa\",\"Africa\",\"Other\"],\"year\":[\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\",\"2009\"]}},\"id\":\"b31fcc89-c164-4ec5-a9bb-ef572df5d2a3\",\"type\":\"ColumnDataSource\"},{\"attributes\":{\"factors\":[\"Other\",\"Asia\",\"Europe\",\"Africa\",\"Oceania\",\"Americas\"],\"palette\":[\"#3288bd\",\"#99d594\",\"#e6f598\",\"#fee08b\",\"#fc8d59\",\"#d53e4f\"]},\"id\":\"7a2eb505-00ec-4b15-a51b-390231033dc7\",\"type\":\"CategoricalColorMapper\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"c6a2dcc7-608f-4fda-b82d-5fe3c44d2979\",\"type\":\"HoverTool\"}]},\"id\":\"8090b67f-ac97-4e92-8b3a-baea08dc75fb\",\"type\":\"Toolbar\"},{\"attributes\":{\"data\":null,\"x\":[0.0,1333807063.0],\"y\":[12,60]},\"id\":\"c8b88f02-de35-4fce-a540-1cbb9e992aec\",\"type\":\"LinearInterpolator\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.6},\"fill_color\":{\"field\":\"region\",\"transform\":{\"id\":\"7a2eb505-00ec-4b15-a51b-390231033dc7\",\"type\":\"CategoricalColorMapper\"}},\"line_color\":{\"field\":\"region\",\"transform\":{\"id\":\"7a2eb505-00ec-4b15-a51b-390231033dc7\",\"type\":\"CategoricalColorMapper\"}},\"size\":{\"field\":\"population\",\"transform\":{\"id\":\"c8b88f02-de35-4fce-a540-1cbb9e992aec\",\"type\":\"LinearInterpolator\"},\"units\":\"screen\"},\"x\":{\"field\":\"income\"},\"y\":{\"field\":\"life_expectancy\"}},\"id\":\"286938f6-9705-41d3-a930-bce9e8906731\",\"type\":\"Circle\"}],\"root_ids\":[\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\"]},\"title\":\"Bokeh Application\",\"version\":\"0.12.13\"}};\n",
" var render_items = [{\"docid\":\"5413a69b-2af4-4034-b62a-06203567cafa\",\"elementid\":\"a54e9693-ce1e-49af-af8f-a8b606702aaa\",\"modelid\":\"6bb9eed9-e4c8-497d-87ba-c67b6142c1e8\"}];\n",
" root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",
"\n",
" }\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" } else {\n",
" var attempts = 0;\n",
" var timer = setInterval(function(root) {\n",
" if (root.Bokeh !== undefined) {\n",
" embed_document(root);\n",
" clearInterval(timer);\n",
" }\n",
" attempts++;\n",
" if (attempts > 100) {\n",
" console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\")\n",
" clearInterval(timer);\n",
" }\n",
" }, 10, root)\n",
" }\n",
"})(window);"
],
"application/vnd.bokehjs_exec.v0+json": ""
},
"metadata": {
"application/vnd.bokehjs_exec.v0+json": {
"id": "6bb9eed9-e4c8-497d-87ba-c67b6142c1e8"
}
},
"output_type": "display_data"
}
],
"source": [
"'''the LinearInterpolator is used to set the size of each datapoint depending on the value of the population'''\n",
"sizeMapper = LinearInterpolator( x = [worldDF2.population.astype(float).min(), worldDF2.population.astype(float).max()],\n",
" y = [12, 60])\n",
"\n",
"'''HoverTool function is used to display some information when you hover over each datapoint in the plot'''\n",
"hover = HoverTool(tooltips = [('Country','@country'),('Population', '@population'), ('Region', '@region')])\n",
"\n",
"'''map different colors to different regions'''\n",
"color_map = CategoricalColorMapper(factors = list(worldDF2.region.unique()), palette = Spectral6)\n",
"\n",
"'''repeat the code for plotting but this time include the hover tools in the tools parameter'''\n",
"p = figure(height = 500, width = 700, title = 'Life Expectancy v/s Income in 2009', \n",
" x_axis_label = 'Income ($)', y_axis_label = 'Life Expectancy (Years)', tools = [hover])\n",
"\n",
"'''add color preferences for hover tools'''\n",
"p.circle( x= 'income', y = 'life_expectancy', \n",
" source = source, size = {'field': 'population', 'transform': sizeMapper}, \n",
" color = {'field': 'region', 'transform': color_map}, \n",
" fill_alpha = 0.6,\n",
" legend = 'region')\n",
"\n",
"'''adjust the location of the legend'''\n",
"p.legend.location = (512, 10)\n",
"\n",
"show(p)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment