From 8de82f170c403c3852d3cd250500273ad075b5a6 Mon Sep 17 00:00:00 2001
From: Chandrasekhar Ramakrishnan <cramakri@ethz.ch>
Date: Mon, 16 Mar 2020 19:37:33 +0000
Subject: [PATCH] renku update --with-siblings

---
 .../e7ec30e9211047128543d4862ff3beee.cwl      |  66 +++
 runs/Dashboard.run.ipynb                      | 470 +++++++++++++++---
 2 files changed, 468 insertions(+), 68 deletions(-)
 create mode 100644 .renku/workflow/e7ec30e9211047128543d4862ff3beee.cwl

diff --git a/.renku/workflow/e7ec30e9211047128543d4862ff3beee.cwl b/.renku/workflow/e7ec30e9211047128543d4862ff3beee.cwl
new file mode 100644
index 00000000..9b82e33c
--- /dev/null
+++ b/.renku/workflow/e7ec30e9211047128543d4862ff3beee.cwl
@@ -0,0 +1,66 @@
+class: Workflow
+cwlVersion: v1.0
+hints: []
+inputs:
+  input_1:
+    default: ts_folder
+    streamable: false
+    type: string
+  input_2:
+    default:
+      class: Directory
+      listing: []
+      path: ../../data/covid-19_jhu-csse
+    streamable: false
+    type: Directory
+  input_3:
+    default: rates_folder
+    streamable: false
+    type: string
+  input_4:
+    default:
+      class: Directory
+      listing: []
+      path: ../../data/covid-19_rates
+    streamable: false
+    type: Directory
+  input_5:
+    default: geodata_path
+    streamable: false
+    type: string
+  input_6:
+    default:
+      class: File
+      path: ../../data/geodata/geo_data.csv
+    streamable: false
+    type: File
+  input_7:
+    default:
+      class: File
+      path: ../../notebooks/Dashboard.ipynb
+    streamable: false
+    type: File
+  input_8:
+    default: runs/Dashboard.run.ipynb
+    streamable: false
+    type: string
+outputs:
+  output_0:
+    outputSource: step_1/output_0
+    streamable: false
+    type: File
+requirements: []
+steps:
+  step_1:
+    in:
+      input_1: input_1
+      input_2: input_2
+      input_3: input_3
+      input_4: input_4
+      input_5: input_5
+      input_6: input_6
+      input_7: input_7
+      input_8: input_8
+    out:
+    - output_0
+    run: 4cc7ffe9d5a045efb048ef2222a40ffa_papermill.cwl
diff --git a/runs/Dashboard.run.ipynb b/runs/Dashboard.run.ipynb
index cc8928fe..66497b89 100644
--- a/runs/Dashboard.run.ipynb
+++ b/runs/Dashboard.run.ipynb
@@ -5,10 +5,10 @@
    "execution_count": 1,
    "metadata": {
     "papermill": {
-     "duration": 0.459578,
-     "end_time": "2020-03-15T18:37:34.869556",
+     "duration": 0.464711,
+     "end_time": "2020-03-16T19:37:31.538772",
      "exception": false,
-     "start_time": "2020-03-15T18:37:34.409978",
+     "start_time": "2020-03-16T19:37:31.074061",
      "status": "completed"
     },
     "tags": []
@@ -16,6 +16,7 @@
    "outputs": [],
    "source": [
     "import pandas as pd\n",
+    "import numpy as np\n",
     "import os\n",
     "from IPython.display import display, HTML, Markdown\n",
     "import covid_19_dashboard as helper"
@@ -26,10 +27,10 @@
    "execution_count": 2,
    "metadata": {
     "papermill": {
-     "duration": 0.021643,
-     "end_time": "2020-03-15T18:37:34.909914",
+     "duration": 0.02108,
+     "end_time": "2020-03-16T19:37:31.579658",
      "exception": false,
-     "start_time": "2020-03-15T18:37:34.888271",
+     "start_time": "2020-03-16T19:37:31.558578",
      "status": "completed"
     },
     "tags": [
@@ -50,10 +51,10 @@
    "execution_count": 3,
    "metadata": {
     "papermill": {
-     "duration": 0.020476,
-     "end_time": "2020-03-15T18:37:34.939191",
+     "duration": 0.024374,
+     "end_time": "2020-03-16T19:37:31.614444",
      "exception": false,
-     "start_time": "2020-03-15T18:37:34.918715",
+     "start_time": "2020-03-16T19:37:31.590070",
      "status": "completed"
     },
     "tags": [
@@ -63,11 +64,11 @@
    "outputs": [],
    "source": [
     "# Parameters\n",
-    "PAPERMILL_INPUT_PATH = \"/tmp/fer34kve/notebooks/Dashboard.ipynb\"\n",
+    "PAPERMILL_INPUT_PATH = \"/tmp/30edqohi/notebooks/Dashboard.ipynb\"\n",
     "PAPERMILL_OUTPUT_PATH = \"runs/Dashboard.run.ipynb\"\n",
-    "ts_folder = \"/tmp/fer34kve/data/covid-19_jhu-csse\"\n",
-    "rates_folder = \"/tmp/fer34kve/data/covid-19_rates\"\n",
-    "geodata_path = \"/tmp/fer34kve/data/geodata/geo_data.csv\"\n"
+    "ts_folder = \"/tmp/30edqohi/data/covid-19_jhu-csse\"\n",
+    "rates_folder = \"/tmp/30edqohi/data/covid-19_rates\"\n",
+    "geodata_path = \"/tmp/30edqohi/data/geodata/geo_data.csv\"\n"
    ]
   },
   {
@@ -75,10 +76,10 @@
    "execution_count": 4,
    "metadata": {
     "papermill": {
-     "duration": 0.019696,
-     "end_time": "2020-03-15T18:37:34.967260",
+     "duration": 0.024105,
+     "end_time": "2020-03-16T19:37:31.660498",
      "exception": false,
-     "start_time": "2020-03-15T18:37:34.947564",
+     "start_time": "2020-03-16T19:37:31.636393",
      "status": "completed"
     },
     "tags": []
@@ -93,10 +94,10 @@
    "execution_count": 5,
    "metadata": {
     "papermill": {
-     "duration": 0.11357,
-     "end_time": "2020-03-15T18:37:35.089592",
+     "duration": 0.113797,
+     "end_time": "2020-03-16T19:37:31.785101",
      "exception": false,
-     "start_time": "2020-03-15T18:37:34.976022",
+     "start_time": "2020-03-16T19:37:31.671304",
      "status": "completed"
     },
     "tags": []
@@ -115,10 +116,10 @@
    "cell_type": "markdown",
    "metadata": {
     "papermill": {
-     "duration": 0.010515,
-     "end_time": "2020-03-15T18:37:35.119478",
+     "duration": 0.01115,
+     "end_time": "2020-03-16T19:37:31.817527",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.108963",
+     "start_time": "2020-03-16T19:37:31.806377",
      "status": "completed"
     },
     "tags": []
@@ -136,10 +137,10 @@
    "execution_count": 6,
    "metadata": {
     "papermill": {
-     "duration": 0.043214,
-     "end_time": "2020-03-15T18:37:35.170249",
+     "duration": 0.038028,
+     "end_time": "2020-03-16T19:37:31.864069",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.127035",
+     "start_time": "2020-03-16T19:37:31.826041",
      "status": "completed"
     },
     "tags": []
@@ -167,10 +168,10 @@
    "cell_type": "markdown",
    "metadata": {
     "papermill": {
-     "duration": 0.008951,
-     "end_time": "2020-03-15T18:37:35.196228",
+     "duration": 0.009257,
+     "end_time": "2020-03-16T19:37:31.887304",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.187277",
+     "start_time": "2020-03-16T19:37:31.878047",
      "status": "completed"
     },
     "tags": []
@@ -184,10 +185,10 @@
    "execution_count": 7,
    "metadata": {
     "papermill": {
-     "duration": 0.019124,
-     "end_time": "2020-03-15T18:37:35.222813",
+     "duration": 0.021899,
+     "end_time": "2020-03-16T19:37:31.919972",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.203689",
+     "start_time": "2020-03-16T19:37:31.898073",
      "status": "completed"
     },
     "tags": []
@@ -202,10 +203,10 @@
    "execution_count": 8,
    "metadata": {
     "papermill": {
-     "duration": 0.049232,
-     "end_time": "2020-03-15T18:37:35.282648",
+     "duration": 0.060741,
+     "end_time": "2020-03-16T19:37:31.991920",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.233416",
+     "start_time": "2020-03-16T19:37:31.931179",
      "status": "completed"
     },
     "tags": []
@@ -220,10 +221,10 @@
    "execution_count": 9,
    "metadata": {
     "papermill": {
-     "duration": 0.126646,
-     "end_time": "2020-03-15T18:37:35.429936",
+     "duration": 0.118059,
+     "end_time": "2020-03-16T19:37:32.130413",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.303290",
+     "start_time": "2020-03-16T19:37:32.012354",
      "status": "completed"
     },
     "tags": []
@@ -233,10 +234,10 @@
      "data": {
       "text/html": [
        "\n",
-       "<div id=\"altair-viz-e60bad1540b84172a14811370b16a4b1\"></div>\n",
+       "<div id=\"altair-viz-2b27e1cd2c9846a580069280ecdc0349\"></div>\n",
        "<script type=\"text/javascript\">\n",
        "  (function(spec, embedOpt){\n",
-       "    const outputDiv = document.getElementById(\"altair-viz-e60bad1540b84172a14811370b16a4b1\");\n",
+       "    const outputDiv = document.getElementById(\"altair-viz-2b27e1cd2c9846a580069280ecdc0349\");\n",
        "    const paths = {\n",
        "      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
        "      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
@@ -320,10 +321,10 @@
    "execution_count": 10,
    "metadata": {
     "papermill": {
-     "duration": 0.097247,
-     "end_time": "2020-03-15T18:37:35.544984",
+     "duration": 0.095504,
+     "end_time": "2020-03-16T19:37:32.243454",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.447737",
+     "start_time": "2020-03-16T19:37:32.147950",
      "status": "completed"
     },
     "tags": []
@@ -333,10 +334,10 @@
      "data": {
       "text/html": [
        "\n",
-       "<div id=\"altair-viz-59f2d4843002481eb23decfa32046c7c\"></div>\n",
+       "<div id=\"altair-viz-5f173dbdceb743a2b52b65dc60d945af\"></div>\n",
        "<script type=\"text/javascript\">\n",
        "  (function(spec, embedOpt){\n",
-       "    const outputDiv = document.getElementById(\"altair-viz-59f2d4843002481eb23decfa32046c7c\");\n",
+       "    const outputDiv = document.getElementById(\"altair-viz-5f173dbdceb743a2b52b65dc60d945af\");\n",
        "    const paths = {\n",
        "      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
        "      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
@@ -436,10 +437,10 @@
    "cell_type": "markdown",
    "metadata": {
     "papermill": {
-     "duration": 0.010252,
-     "end_time": "2020-03-15T18:37:35.572988",
+     "duration": 0.012367,
+     "end_time": "2020-03-16T19:37:32.277849",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.562736",
+     "start_time": "2020-03-16T19:37:32.265482",
      "status": "completed"
     },
     "tags": []
@@ -453,17 +454,17 @@
    "execution_count": 11,
    "metadata": {
     "papermill": {
-     "duration": 0.070855,
-     "end_time": "2020-03-15T18:37:35.653535",
+     "duration": 0.065808,
+     "end_time": "2020-03-16T19:37:32.355850",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.582680",
+     "start_time": "2020-03-16T19:37:32.290042",
      "status": "completed"
     },
     "tags": []
    },
    "outputs": [],
    "source": [
-    "confirmed_rate_df = helper.growth_df(rates_frames_map, geodata_df, 'confirmed', countries_over_thresh)\n",
+    "confirmed_rate_df = helper.growth_df(rates_frames_map, geodata_df, 'confirmed', countries_over_thresh, 2)\n",
     "latest_confirmed_ser = confirmed_rate_df.set_index(\n",
     "    ['Country/Region', 'Geo Region', 'Date']).drop(\n",
     "    ['Longitude', 'Latitude'], axis=1).unstack().iloc[:,-1]\n",
@@ -475,10 +476,10 @@
    "execution_count": 12,
    "metadata": {
     "papermill": {
-     "duration": 0.123355,
-     "end_time": "2020-03-15T18:37:35.799231",
+     "duration": 0.195694,
+     "end_time": "2020-03-16T19:37:32.573880",
      "exception": false,
-     "start_time": "2020-03-15T18:37:35.675876",
+     "start_time": "2020-03-16T19:37:32.378186",
      "status": "completed"
     },
     "tags": []
@@ -488,10 +489,10 @@
      "data": {
       "text/html": [
        "\n",
-       "<div id=\"altair-viz-07cbea5bc0ce418e826951bb4e106548\"></div>\n",
+       "<div id=\"altair-viz-3a0b72e3d9c441768d2569a59c7b7179\"></div>\n",
        "<script type=\"text/javascript\">\n",
        "  (function(spec, embedOpt){\n",
-       "    const outputDiv = document.getElementById(\"altair-viz-07cbea5bc0ce418e826951bb4e106548\");\n",
+       "    const outputDiv = document.getElementById(\"altair-viz-3a0b72e3d9c441768d2569a59c7b7179\");\n",
        "    const paths = {\n",
        "      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
        "      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
@@ -539,13 +540,30 @@
        "alt.Chart(...)"
       ]
      },
-     "execution_count": 12,
      "metadata": {},
-     "output_type": "execute_result"
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "\n",
+       "<p style=\"font-size: smaller\">Data Sources: \n",
+       "  <a href=\"https://github.com/CSSEGISandData/COVID-19\">JHU CSSE</a>,\n",
+       "  <a href=\"https://data.worldbank.org/indicator/SP.POP.TOTL\">World Bank</a>,\n",
+       "  <a href=\"https://worldmap.harvard.edu/data/geonode:country_centroids_az8\">Harvard Worldmap</a>\n",
+       "</p>"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
     }
    ],
    "source": [
-    "base = alt.Chart(confirmed_rate_df).properties(width=300, height=200, title=\"Countries with 2 or more cases per 100k\")\n",
+    "base = alt.Chart(confirmed_rate_df).properties(\n",
+    "    width=300, height=200, title=\"Countries with 2 or more cases per 100k\")\n",
     "line = base.mark_line().encode(\n",
     "    x='Date',\n",
     "    y='Confirmed/100k',\n",
@@ -553,7 +571,323 @@
     "    facet=alt.Facet('Geo Region:N', columns=1, sort=alt.SortArray(sort_order), title='Geographic Region'),\n",
     "    tooltip=[\"Country/Region:N\", \"Date:T\", \"Confirmed/100k:Q\"]\n",
     ")\n",
-    "line"
+    "line\n",
+    "display(line)\n",
+    "display(HTML('''\n",
+    "<p style=\"font-size: smaller\">Data Sources: \n",
+    "  <a href=\"https://github.com/CSSEGISandData/COVID-19\">JHU CSSE</a>,\n",
+    "  <a href=\"https://data.worldbank.org/indicator/SP.POP.TOTL\">World Bank</a>,\n",
+    "  <a href=\"https://worldmap.harvard.edu/data/geonode:country_centroids_az8\">Harvard Worldmap</a>\n",
+    "</p>'''))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 13,
+   "metadata": {
+    "papermill": {
+     "duration": 0.195734,
+     "end_time": "2020-03-16T19:37:32.788325",
+     "exception": false,
+     "start_time": "2020-03-16T19:37:32.592591",
+     "status": "completed"
+    },
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "def country_increase_df(c, df_nominal, growth_in_rate_df):\n",
+    "    over_100 = df_nominal[df_nominal['Confirmed'] >= 100]\n",
+    "    tdf = (over_100[['Date', 'Confirmed']] - over_100.iloc[0][['Date', 'Confirmed']]).reset_index()\n",
+    "    tdfr = growth_in_rate_df[(growth_in_rate_df['Date'] >= over_100.iloc[0]['Date']) &\n",
+    "                             (growth_in_rate_df['Country/Region'] == c)].reset_index()\n",
+    "    tdf['Confirmed/100k'] = tdfr['Confirmed/100k']\n",
+    "    tdf['Country/Region'] = c\n",
+    "    tdf['Days'] = (tdf['Date'] / np.timedelta64(1, 'D')).astype(int)\n",
+    "    return tdf[['Country/Region', 'Days', 'Confirmed', 'Confirmed/100k']]\n",
+    "\n",
+    "\n",
+    "growth_in_rate_df = helper.growth_df(rates_frames_map, geodata_df, 'confirmed', countries_over_thresh, 0)\n",
+    "frame_map = {'confirmed': jhu_frames_map['confirmed'].groupby(level='Country/Region').sum()}\n",
+    "growth_in_value_df = helper.growth_df(frame_map, geodata_df, 'confirmed', countries_over_thresh, 1000)\n",
+    "growth_in_value_df = growth_in_value_df.rename({'Confirmed/100k':'Confirmed'}, axis=1)\n",
+    "increase_df = pd.concat([country_increase_df(c, df_nominal, growth_in_rate_df) for \n",
+    "                         c, df_nominal in growth_in_value_df.groupby('Country/Region')])"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 14,
+   "metadata": {
+    "papermill": {
+     "duration": 0.039725,
+     "end_time": "2020-03-16T19:37:32.857306",
+     "exception": false,
+     "start_time": "2020-03-16T19:37:32.817581",
+     "status": "completed"
+    },
+    "tags": []
+   },
+   "outputs": [],
+   "source": [
+    "def facetted_growth_plot(df, variable, sort_order, ref_country, title):\n",
+    "    base = alt.Chart(df).properties(\n",
+    "        width=250, height=150)\n",
+    "    line = base.mark_line().encode(\n",
+    "        x='Days',\n",
+    "        y=variable,\n",
+    "        color='Country/Region',\n",
+    "        tooltip=[\"Country/Region:N\", \"Days:Q\", f\"{variable}:Q\"]\n",
+    "    )\n",
+    "    label_loc = increase_df[increase_df['Country/Region'] == ref_country]['Days'].iloc[-2]\n",
+    "    ref = base.mark_line(opacity=0.3).encode(\n",
+    "        x='Days',\n",
+    "        y=variable,\n",
+    "        color=alt.ColorValue('steelblue'),\n",
+    "    ).transform_filter(f\"datum['Country/Region'] == '{ref_country}'\")\n",
+    "    ref += ref.mark_text().encode(text='Country/Region:N').transform_filter(f\"datum['Days'] == {label_loc}\")\n",
+    "    charts = []\n",
+    "    # make our small multiples\n",
+    "    for country in sort_order:\n",
+    "        smallm = line.transform_filter(f\"datum['Country/Region'] == '{country}'\").properties(\n",
+    "            title=country)\n",
+    "        smallm += ref\n",
+    "        charts.append(smallm)\n",
+    "\n",
+    "    # group the small multiples into 3 horizontal charts\n",
+    "    groups = []\n",
+    "    c = None\n",
+    "    for i, chart in enumerate(charts):\n",
+    "        if not i%3:\n",
+    "            if c != None:\n",
+    "                groups.append(c)\n",
+    "            c = alt.hconcat()\n",
+    "        c |= chart\n",
+    "    # vertically combine the horizontal charts\n",
+    "    chart = alt.vconcat(title=title)\n",
+    "    for c in groups:\n",
+    "        chart &= c\n",
+    "    return chart"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 15,
+   "metadata": {
+    "papermill": {
+     "duration": 0.221908,
+     "end_time": "2020-03-16T19:37:33.100602",
+     "exception": false,
+     "start_time": "2020-03-16T19:37:32.878694",
+     "status": "completed"
+    },
+    "tags": []
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "\n",
+       "<div id=\"altair-viz-77a66ffd991c4eec8be4b38715230cfb\"></div>\n",
+       "<script type=\"text/javascript\">\n",
+       "  (function(spec, embedOpt){\n",
+       "    const outputDiv = document.getElementById(\"altair-viz-77a66ffd991c4eec8be4b38715230cfb\");\n",
+       "    const paths = {\n",
+       "      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
+       "      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
+       "      \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.0.2?noext\",\n",
+       "      \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n",
+       "    };\n",
+       "\n",
+       "    function loadScript(lib) {\n",
+       "      return new Promise(function(resolve, reject) {\n",
+       "        var s = document.createElement('script');\n",
+       "        s.src = paths[lib];\n",
+       "        s.async = true;\n",
+       "        s.onload = () => resolve(paths[lib]);\n",
+       "        s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
+       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
+       "      });\n",
+       "    }\n",
+       "\n",
+       "    function showError(err) {\n",
+       "      outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
+       "      throw err;\n",
+       "    }\n",
+       "\n",
+       "    function displayChart(vegaEmbed) {\n",
+       "      vegaEmbed(outputDiv, spec, embedOpt)\n",
+       "        .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
+       "    }\n",
+       "\n",
+       "    if(typeof define === \"function\" && define.amd) {\n",
+       "      requirejs.config({paths});\n",
+       "      require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
+       "    } else if (typeof vegaEmbed === \"function\") {\n",
+       "      displayChart(vegaEmbed);\n",
+       "    } else {\n",
+       "      loadScript(\"vega\")\n",
+       "        .then(() => loadScript(\"vega-lite\"))\n",
+       "        .then(() => loadScript(\"vega-embed\"))\n",
+       "        .catch(showError)\n",
+       "        .then(() => displayChart(vegaEmbed));\n",
+       "    }\n",
+       "  })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"vconcat\": [{\"hconcat\": [{\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"Italy\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"Iran\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Iran'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"Korea, South\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Korea, South'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}]}, {\"hconcat\": [{\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"Spain\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Spain'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"Germany\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Germany'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"France\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'France'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}]}, {\"hconcat\": [{\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"US\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'US'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"Switzerland\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Switzerland'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"title\": \"United Kingdom\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'United Kingdom'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}]}], \"data\": {\"name\": \"data-b1d0adfba3e1d05d9378ddbfce7cf172\"}, \"title\": \"Growth of cases from case 100, compared to Italy\", \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.0.2.json\", \"datasets\": {\"data-b1d0adfba3e1d05d9378ddbfce7cf172\": [{\"Country/Region\": \"France\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.14928215288271898}, {\"Country/Region\": \"France\", \"Days\": 1, \"Confirmed\": 30, \"Confirmed/100k\": 0.19406679874753469}, {\"Country/Region\": \"France\", \"Days\": 2, \"Confirmed\": 91, \"Confirmed/100k\": 0.2851289120059933}, {\"Country/Region\": \"France\", \"Days\": 3, \"Confirmed\": 104, \"Confirmed/100k\": 0.30453559188074675}, {\"Country/Region\": \"France\", \"Days\": 4, \"Confirmed\": 188, \"Confirmed/100k\": 0.4299326003022307}, {\"Country/Region\": \"France\", \"Days\": 5, \"Confirmed\": 280, \"Confirmed/100k\": 0.5672721809543322}, {\"Country/Region\": \"France\", \"Days\": 6, \"Confirmed\": 556, \"Confirmed/100k\": 0.9792909229106364}, {\"Country/Region\": \"France\", \"Days\": 7, \"Confirmed\": 852, \"Confirmed/100k\": 1.4211660954434846}, {\"Country/Region\": \"France\", \"Days\": 8, \"Confirmed\": 1029, \"Confirmed/100k\": 1.6853955060458974}, {\"Country/Region\": \"France\", \"Days\": 9, \"Confirmed\": 1112, \"Confirmed/100k\": 1.8092996929385536}, {\"Country/Region\": \"France\", \"Days\": 10, \"Confirmed\": 1687, \"Confirmed/100k\": 2.667672072014188}, {\"Country/Region\": \"France\", \"Days\": 11, \"Confirmed\": 2184, \"Confirmed/100k\": 3.4096043718413016}, {\"Country/Region\": \"France\", \"Days\": 12, \"Confirmed\": 2184, \"Confirmed/100k\": 3.4096043718413016}, {\"Country/Region\": \"France\", \"Days\": 13, \"Confirmed\": 3567, \"Confirmed/100k\": 5.474176546209304}, {\"Country/Region\": \"France\", \"Days\": 14, \"Confirmed\": 4380, \"Confirmed/100k\": 6.687840449145809}, {\"Country/Region\": \"Germany\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.15676264021182154}, {\"Country/Region\": \"Germany\", \"Days\": 1, \"Confirmed\": 29, \"Confirmed/100k\": 0.19173276764368946}, {\"Country/Region\": \"Germany\", \"Days\": 2, \"Confirmed\": 66, \"Confirmed/100k\": 0.23634982678090016}, {\"Country/Region\": \"Germany\", \"Days\": 3, \"Confirmed\": 132, \"Confirmed/100k\": 0.3159370133499788}, {\"Country/Region\": \"Germany\", \"Days\": 4, \"Confirmed\": 352, \"Confirmed/100k\": 0.5812276352469076}, {\"Country/Region\": \"Germany\", \"Days\": 5, \"Confirmed\": 540, \"Confirmed/100k\": 0.8079305303224649}, {\"Country/Region\": \"Germany\", \"Days\": 6, \"Confirmed\": 669, \"Confirmed/100k\": 0.9634873040711186}, {\"Country/Region\": \"Germany\", \"Days\": 7, \"Confirmed\": 910, \"Confirmed/100k\": 1.2541011216945723}, {\"Country/Region\": \"Germany\", \"Days\": 8, \"Confirmed\": 1046, \"Confirmed/100k\": 1.4180989606854009}, {\"Country/Region\": \"Germany\", \"Days\": 9, \"Confirmed\": 1327, \"Confirmed/100k\": 1.7569474368355689}, {\"Country/Region\": \"Germany\", \"Days\": 10, \"Confirmed\": 1778, \"Confirmed/100k\": 2.300793211724273}, {\"Country/Region\": \"Germany\", \"Days\": 11, \"Confirmed\": 1948, \"Confirmed/100k\": 2.5057905104628087}, {\"Country/Region\": \"Germany\", \"Days\": 12, \"Confirmed\": 3545, \"Confirmed/100k\": 4.431559252141878}, {\"Country/Region\": \"Germany\", \"Days\": 13, \"Confirmed\": 4455, \"Confirmed/100k\": 5.528897733624627}, {\"Country/Region\": \"Iran\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.16992609156334193}, {\"Country/Region\": \"Iran\", \"Days\": 1, \"Confirmed\": 106, \"Confirmed/100k\": 0.2995100175037322}, {\"Country/Region\": \"Iran\", \"Days\": 2, \"Confirmed\": 249, \"Confirmed/100k\": 0.4743260685365228}, {\"Country/Region\": \"Iran\", \"Days\": 3, \"Confirmed\": 454, \"Confirmed/100k\": 0.724936491345768}, {\"Country/Region\": \"Iran\", \"Days\": 4, \"Confirmed\": 839, \"Confirmed/100k\": 1.1955950902802044}, {\"Country/Region\": \"Iran\", \"Days\": 5, \"Confirmed\": 1362, \"Confirmed/100k\": 1.83495729091062}, {\"Country/Region\": \"Iran\", \"Days\": 6, \"Confirmed\": 2197, \"Confirmed/100k\": 2.855736330158034}, {\"Country/Region\": \"Iran\", \"Days\": 7, \"Confirmed\": 2783, \"Confirmed/100k\": 3.5721153924322673}, {\"Country/Region\": \"Iran\", \"Days\": 8, \"Confirmed\": 3374, \"Confirmed/100k\": 4.29460690404331}, {\"Country/Region\": \"Iran\", \"Days\": 9, \"Confirmed\": 4608, \"Confirmed/100k\": 5.803159400368232}, {\"Country/Region\": \"Iran\", \"Days\": 10, \"Confirmed\": 5684, \"Confirmed/100k\": 7.118558497649927}, {\"Country/Region\": \"Iran\", \"Days\": 11, \"Confirmed\": 6427, \"Confirmed/100k\": 8.026868469100023}, {\"Country/Region\": \"Iran\", \"Days\": 12, \"Confirmed\": 7022, \"Confirmed/100k\": 8.754249940180514}, {\"Country/Region\": \"Iran\", \"Days\": 13, \"Confirmed\": 7903, \"Confirmed/100k\": 9.831263513326588}, {\"Country/Region\": \"Iran\", \"Days\": 14, \"Confirmed\": 8861, \"Confirmed/100k\": 11.002408806259547}, {\"Country/Region\": \"Iran\", \"Days\": 15, \"Confirmed\": 9936, \"Confirmed/100k\": 12.316585413673884}, {\"Country/Region\": \"Iran\", \"Days\": 16, \"Confirmed\": 11225, \"Confirmed/100k\": 13.892374852703725}, {\"Country/Region\": \"Iran\", \"Days\": 17, \"Confirmed\": 12590, \"Confirmed/100k\": 15.561073521653087}, {\"Country/Region\": \"Italy\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.2564896727411861}, {\"Country/Region\": \"Italy\", \"Days\": 1, \"Confirmed\": 74, \"Confirmed/100k\": 0.3789428068240749}, {\"Country/Region\": \"Italy\", \"Days\": 2, \"Confirmed\": 167, \"Confirmed/100k\": 0.5328366104687865}, {\"Country/Region\": \"Italy\", \"Days\": 3, \"Confirmed\": 298, \"Confirmed/100k\": 0.7496117532371437}, {\"Country/Region\": \"Italy\", \"Days\": 4, \"Confirmed\": 500, \"Confirmed/100k\": 1.0838757138417865}, {\"Country/Region\": \"Italy\", \"Days\": 5, \"Confirmed\": 733, \"Confirmed/100k\": 1.4694376089946661}, {\"Country/Region\": \"Italy\", \"Days\": 6, \"Confirmed\": 973, \"Confirmed/100k\": 1.8665829087229542}, {\"Country/Region\": \"Italy\", \"Days\": 7, \"Confirmed\": 1539, \"Confirmed/100k\": 2.803183907248833}, {\"Country/Region\": \"Italy\", \"Days\": 8, \"Confirmed\": 1881, \"Confirmed/100k\": 3.369115959361644}, {\"Country/Region\": \"Italy\", \"Days\": 9, \"Confirmed\": 2347, \"Confirmed/100k\": 4.140239749667403}, {\"Country/Region\": \"Italy\", \"Days\": 10, \"Confirmed\": 2934, \"Confirmed/100k\": 5.111590961919508}, {\"Country/Region\": \"Italy\", \"Days\": 11, \"Confirmed\": 3703, \"Confirmed/100k\": 6.384110693132231}, {\"Country/Region\": \"Italy\", \"Days\": 12, \"Confirmed\": 4481, \"Confirmed/100k\": 7.6715233730847645}, {\"Country/Region\": \"Italy\", \"Days\": 13, \"Confirmed\": 5728, \"Confirmed/100k\": 9.735024159589663}, {\"Country/Region\": \"Italy\", \"Days\": 14, \"Confirmed\": 7220, \"Confirmed/100k\": 12.203944106233852}, {\"Country/Region\": \"Italy\", \"Days\": 15, \"Confirmed\": 9017, \"Confirmed/100k\": 15.17756953794941}, {\"Country/Region\": \"Italy\", \"Days\": 16, \"Confirmed\": 9994, \"Confirmed/100k\": 16.794281862259982}, {\"Country/Region\": \"Italy\", \"Days\": 17, \"Confirmed\": 12307, \"Confirmed/100k\": 20.62176968839136}, {\"Country/Region\": \"Italy\", \"Days\": 18, \"Confirmed\": 12307, \"Confirmed/100k\": 20.62176968839136}, {\"Country/Region\": \"Italy\", \"Days\": 19, \"Confirmed\": 17505, \"Confirmed/100k\": 29.22327497167319}, {\"Country/Region\": \"Italy\", \"Days\": 20, \"Confirmed\": 21002, \"Confirmed/100k\": 35.0100129431308}, {\"Country/Region\": \"Korea, South\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.20141277115000653}, {\"Country/Region\": \"Korea, South\", \"Days\": 1, \"Confirmed\": 100, \"Confirmed/100k\": 0.39507889725578205}, {\"Country/Region\": \"Korea, South\", \"Days\": 2, \"Confirmed\": 329, \"Confirmed/100k\": 0.8385743260380079}, {\"Country/Region\": \"Korea, South\", \"Days\": 3, \"Confirmed\": 498, \"Confirmed/100k\": 1.1658700791567684}, {\"Country/Region\": \"Korea, South\", \"Days\": 4, \"Confirmed\": 729, \"Confirmed/100k\": 1.6132388304611098}, {\"Country/Region\": \"Korea, South\", \"Days\": 5, \"Confirmed\": 873, \"Confirmed/100k\": 1.8921180520534264}, {\"Country/Region\": \"Korea, South\", \"Days\": 6, \"Confirmed\": 1157, \"Confirmed/100k\": 2.4421298501938287}, {\"Country/Region\": \"Korea, South\", \"Days\": 7, \"Confirmed\": 1662, \"Confirmed/100k\": 3.420143787027995}, {\"Country/Region\": \"Korea, South\", \"Days\": 8, \"Confirmed\": 2233, \"Confirmed/100k\": 4.525977367091973}, {\"Country/Region\": \"Korea, South\", \"Days\": 9, \"Confirmed\": 3046, \"Confirmed/100k\": 6.100482972331928}, {\"Country/Region\": \"Korea, South\", \"Days\": 10, \"Confirmed\": 3632, \"Confirmed/100k\": 7.235366471311772}, {\"Country/Region\": \"Korea, South\", \"Days\": 11, \"Confirmed\": 4231, \"Confirmed/100k\": 8.395426566685366}, {\"Country/Region\": \"Korea, South\", \"Days\": 12, \"Confirmed\": 5082, \"Confirmed/100k\": 10.043525299845516}, {\"Country/Region\": \"Korea, South\", \"Days\": 13, \"Confirmed\": 5517, \"Confirmed/100k\": 10.885972948405641}, {\"Country/Region\": \"Korea, South\", \"Days\": 14, \"Confirmed\": 5984, \"Confirmed/100k\": 11.790393757319613}, {\"Country/Region\": \"Korea, South\", \"Days\": 15, \"Confirmed\": 6489, \"Confirmed/100k\": 12.768407694153776}, {\"Country/Region\": \"Korea, South\", \"Days\": 16, \"Confirmed\": 6937, \"Confirmed/100k\": 13.636031939107651}, {\"Country/Region\": \"Korea, South\", \"Days\": 17, \"Confirmed\": 7210, \"Confirmed/100k\": 14.16474046337642}, {\"Country/Region\": \"Korea, South\", \"Days\": 18, \"Confirmed\": 7374, \"Confirmed/100k\": 14.48235291018989}, {\"Country/Region\": \"Korea, South\", \"Days\": 19, \"Confirmed\": 7409, \"Confirmed/100k\": 14.550136054326911}, {\"Country/Region\": \"Korea, South\", \"Days\": 20, \"Confirmed\": 7651, \"Confirmed/100k\": 15.01880807950289}, {\"Country/Region\": \"Korea, South\", \"Days\": 21, \"Confirmed\": 7765, \"Confirmed/100k\": 15.239587463263474}, {\"Country/Region\": \"Korea, South\", \"Days\": 22, \"Confirmed\": 7875, \"Confirmed/100k\": 15.452620201979823}, {\"Country/Region\": \"Korea, South\", \"Days\": 23, \"Confirmed\": 7982, \"Confirmed/100k\": 15.659842956913007}, {\"Country/Region\": \"Norway\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 2.0322388347293057}, {\"Country/Region\": \"Norway\", \"Days\": 1, \"Confirmed\": 39, \"Confirmed/100k\": 2.7661028583815552}, {\"Country/Region\": \"Norway\", \"Days\": 2, \"Confirmed\": 68, \"Confirmed/100k\": 3.3117966195588684}, {\"Country/Region\": \"Norway\", \"Days\": 3, \"Confirmed\": 97, \"Confirmed/100k\": 3.8574903807361824}, {\"Country/Region\": \"Norway\", \"Days\": 4, \"Confirmed\": 292, \"Confirmed/100k\": 7.526810498997428}, {\"Country/Region\": \"Norway\", \"Days\": 5, \"Confirmed\": 490, \"Confirmed/100k\": 11.252581696001155}, {\"Country/Region\": \"Norway\", \"Days\": 6, \"Confirmed\": 594, \"Confirmed/100k\": 13.209552425740487}, {\"Country/Region\": \"Norway\", \"Days\": 7, \"Confirmed\": 888, \"Confirmed/100k\": 18.741758142503603}, {\"Country/Region\": \"Norway\", \"Days\": 8, \"Confirmed\": 982, \"Confirmed/100k\": 20.510558609767997}, {\"Country/Region\": \"Spain\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.25682870610404146}, {\"Country/Region\": \"Spain\", \"Days\": 1, \"Confirmed\": 45, \"Confirmed/100k\": 0.353139470893057}, {\"Country/Region\": \"Spain\", \"Days\": 2, \"Confirmed\": 102, \"Confirmed/100k\": 0.4751331062924767}, {\"Country/Region\": \"Spain\", \"Days\": 3, \"Confirmed\": 139, \"Confirmed/100k\": 0.5543219573412228}, {\"Country/Region\": \"Spain\", \"Days\": 4, \"Confirmed\": 280, \"Confirmed/100k\": 0.8560956870134715}, {\"Country/Region\": \"Spain\", \"Days\": 5, \"Confirmed\": 380, \"Confirmed/100k\": 1.0701196087668394}, {\"Country/Region\": \"Spain\", \"Days\": 6, \"Confirmed\": 553, \"Confirmed/100k\": 1.4403809934001657}, {\"Country/Region\": \"Spain\", \"Days\": 7, \"Confirmed\": 953, \"Confirmed/100k\": 2.2964766804136367}, {\"Country/Region\": \"Spain\", \"Days\": 8, \"Confirmed\": 1575, \"Confirmed/100k\": 3.6277054737195855}, {\"Country/Region\": \"Spain\", \"Days\": 9, \"Confirmed\": 2157, \"Confirmed/100k\": 4.873324698324187}, {\"Country/Region\": \"Spain\", \"Days\": 10, \"Confirmed\": 2157, \"Confirmed/100k\": 4.873324698324187}, {\"Country/Region\": \"Spain\", \"Days\": 11, \"Confirmed\": 5112, \"Confirmed/100k\": 11.197731586136207}, {\"Country/Region\": \"Spain\", \"Days\": 12, \"Confirmed\": 6271, \"Confirmed/100k\": 13.678268839257742}, {\"Country/Region\": \"Switzerland\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 1.3385712958884843}, {\"Country/Region\": \"Switzerland\", \"Days\": 1, \"Confirmed\": 100, \"Confirmed/100k\": 2.5127566431590846}, {\"Country/Region\": \"Switzerland\", \"Days\": 2, \"Confirmed\": 154, \"Confirmed/100k\": 3.1468167306852086}, {\"Country/Region\": \"Switzerland\", \"Days\": 3, \"Confirmed\": 223, \"Confirmed/100k\": 3.957004620301923}, {\"Country/Region\": \"Switzerland\", \"Days\": 4, \"Confirmed\": 260, \"Confirmed/100k\": 4.391453198792045}, {\"Country/Region\": \"Switzerland\", \"Days\": 5, \"Confirmed\": 377, \"Confirmed/100k\": 5.7652500550986465}, {\"Country/Region\": \"Switzerland\", \"Days\": 6, \"Confirmed\": 538, \"Confirmed/100k\": 7.655688464204314}, {\"Country/Region\": \"Switzerland\", \"Days\": 7, \"Confirmed\": 538, \"Confirmed/100k\": 7.655688464204314}, {\"Country/Region\": \"Switzerland\", \"Days\": 8, \"Confirmed\": 1025, \"Confirmed/100k\": 13.373971105412135}, {\"Country/Region\": \"Switzerland\", \"Days\": 9, \"Confirmed\": 1245, \"Confirmed/100k\": 15.957178869407455}, {\"Country/Region\": \"US\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.03606715942271932}, {\"Country/Region\": \"US\", \"Days\": 1, \"Confirmed\": 31, \"Confirmed/100k\": 0.04554243011851846}, {\"Country/Region\": \"US\", \"Days\": 2, \"Confirmed\": 99, \"Confirmed/100k\": 0.06632689487059401}, {\"Country/Region\": \"US\", \"Days\": 3, \"Confirmed\": 144, \"Confirmed/100k\": 0.0800813200741734}, {\"Country/Region\": \"US\", \"Days\": 4, \"Confirmed\": 284, \"Confirmed/100k\": 0.122872865151976}, {\"Country/Region\": \"US\", \"Days\": 5, \"Confirmed\": 400, \"Confirmed/100k\": 0.15832871678786953}, {\"Country/Region\": \"US\", \"Days\": 6, \"Confirmed\": 465, \"Confirmed/100k\": 0.17819621985970646}, {\"Country/Region\": \"US\", \"Days\": 7, \"Confirmed\": 841, \"Confirmed/100k\": 0.2931220837829477}, {\"Country/Region\": \"US\", \"Days\": 8, \"Confirmed\": 1163, \"Confirmed/100k\": 0.3915426374618936}, {\"Country/Region\": \"US\", \"Days\": 9, \"Confirmed\": 1545, \"Confirmed/100k\": 0.508302424745612}, {\"Country/Region\": \"US\", \"Days\": 10, \"Confirmed\": 2061, \"Confirmed/100k\": 0.6660198337466559}, {\"Country/Region\": \"US\", \"Days\": 11, \"Confirmed\": 2609, \"Confirmed/100k\": 0.8335181673369116}, {\"Country/Region\": \"United Kingdom\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.17446497270503022}, {\"Country/Region\": \"United Kingdom\", \"Days\": 1, \"Confirmed\": 48, \"Confirmed/100k\": 0.2466573752036634}, {\"Country/Region\": \"United Kingdom\", \"Days\": 2, \"Confirmed\": 91, \"Confirmed/100k\": 0.3113297357753557}, {\"Country/Region\": \"United Kingdom\", \"Days\": 3, \"Confirmed\": 158, \"Confirmed/100k\": 0.4120982975963645}, {\"Country/Region\": \"United Kingdom\", \"Days\": 4, \"Confirmed\": 206, \"Confirmed/100k\": 0.4842907000949977}, {\"Country/Region\": \"United Kingdom\", \"Days\": 5, \"Confirmed\": 268, \"Confirmed/100k\": 0.5775392199890655}, {\"Country/Region\": \"United Kingdom\", \"Days\": 6, \"Confirmed\": 343, \"Confirmed/100k\": 0.6903398488931799}, {\"Country/Region\": \"United Kingdom\", \"Days\": 7, \"Confirmed\": 343, \"Confirmed/100k\": 0.6903398488931799}, {\"Country/Region\": \"United Kingdom\", \"Days\": 8, \"Confirmed\": 685, \"Confirmed/100k\": 1.2047107166959414}, {\"Country/Region\": \"United Kingdom\", \"Days\": 9, \"Confirmed\": 1027, \"Confirmed/100k\": 1.719081584498703}]}}, {\"mode\": \"vega-lite\"});\n",
+       "</script>"
+      ],
+      "text/plain": [
+       "alt.VConcatChart(...)"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "\n",
+       "<p style=\"font-size: smaller\">Data Sources: \n",
+       "  <a href=\"https://github.com/CSSEGISandData/COVID-19\">JHU CSSE</a>,\n",
+       "  <a href=\"https://data.worldbank.org/indicator/SP.POP.TOTL\">World Bank</a>,\n",
+       "  <a href=\"https://worldmap.harvard.edu/data/geonode:country_centroids_az8\">Harvard Worldmap</a>\n",
+       "</p>\n",
+       "<p style=\"font-size: smaller\">Inspired by <a href=\"https://covid19dashboards.com/growth-analysis/\">Thomas Wiecki</a>"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "sort_order = growth_in_value_df.groupby(\n",
+    "    'Country/Region').max().sort_values(\n",
+    "    'Confirmed', ascending=False).index.tolist()\n",
+    "# Exclude China in this plot because its numbers are far greater then everywhere else\n",
+    "sort_order = [o for o in sort_order if o != 'China']\n",
+    "chart = facetted_growth_plot(increase_df[increase_df['Country/Region'] != 'China'], \n",
+    "                             'Confirmed',\n",
+    "                             sort_order,\n",
+    "                             'Italy',\n",
+    "                             \"Growth of cases from case 100, compared to Italy\")\n",
+    "display(chart)\n",
+    "display(HTML('''\n",
+    "<p style=\"font-size: smaller\">Data Sources: \n",
+    "  <a href=\"https://github.com/CSSEGISandData/COVID-19\">JHU CSSE</a>,\n",
+    "  <a href=\"https://data.worldbank.org/indicator/SP.POP.TOTL\">World Bank</a>,\n",
+    "  <a href=\"https://worldmap.harvard.edu/data/geonode:country_centroids_az8\">Harvard Worldmap</a>\n",
+    "</p>\n",
+    "<p style=\"font-size: smaller\">Inspired by <a href=\"https://covid19dashboards.com/growth-analysis/\">Thomas Wiecki</a>'''))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 16,
+   "metadata": {
+    "papermill": {
+     "duration": 0.216052,
+     "end_time": "2020-03-16T19:37:33.346433",
+     "exception": false,
+     "start_time": "2020-03-16T19:37:33.130381",
+     "status": "completed"
+    },
+    "tags": []
+   },
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "\n",
+       "<div id=\"altair-viz-f4d65d54885e447cb84333868bf82c33\"></div>\n",
+       "<script type=\"text/javascript\">\n",
+       "  (function(spec, embedOpt){\n",
+       "    const outputDiv = document.getElementById(\"altair-viz-f4d65d54885e447cb84333868bf82c33\");\n",
+       "    const paths = {\n",
+       "      \"vega\": \"https://cdn.jsdelivr.net/npm//vega@5?noext\",\n",
+       "      \"vega-lib\": \"https://cdn.jsdelivr.net/npm//vega-lib?noext\",\n",
+       "      \"vega-lite\": \"https://cdn.jsdelivr.net/npm//vega-lite@4.0.2?noext\",\n",
+       "      \"vega-embed\": \"https://cdn.jsdelivr.net/npm//vega-embed@6?noext\",\n",
+       "    };\n",
+       "\n",
+       "    function loadScript(lib) {\n",
+       "      return new Promise(function(resolve, reject) {\n",
+       "        var s = document.createElement('script');\n",
+       "        s.src = paths[lib];\n",
+       "        s.async = true;\n",
+       "        s.onload = () => resolve(paths[lib]);\n",
+       "        s.onerror = () => reject(`Error loading script: ${paths[lib]}`);\n",
+       "        document.getElementsByTagName(\"head\")[0].appendChild(s);\n",
+       "      });\n",
+       "    }\n",
+       "\n",
+       "    function showError(err) {\n",
+       "      outputDiv.innerHTML = `<div class=\"error\" style=\"color:red;\">${err}</div>`;\n",
+       "      throw err;\n",
+       "    }\n",
+       "\n",
+       "    function displayChart(vegaEmbed) {\n",
+       "      vegaEmbed(outputDiv, spec, embedOpt)\n",
+       "        .catch(err => showError(`Javascript Error: ${err.message}<br>This usually means there's a typo in your chart specification. See the javascript console for the full traceback.`));\n",
+       "    }\n",
+       "\n",
+       "    if(typeof define === \"function\" && define.amd) {\n",
+       "      requirejs.config({paths});\n",
+       "      require([\"vega-embed\"], displayChart, err => showError(`Error loading script: ${err.message}`));\n",
+       "    } else if (typeof vegaEmbed === \"function\") {\n",
+       "      displayChart(vegaEmbed);\n",
+       "    } else {\n",
+       "      loadScript(\"vega\")\n",
+       "        .then(() => loadScript(\"vega-lite\"))\n",
+       "        .then(() => loadScript(\"vega-embed\"))\n",
+       "        .catch(showError)\n",
+       "        .then(() => displayChart(vegaEmbed));\n",
+       "    }\n",
+       "  })({\"config\": {\"view\": {\"continuousWidth\": 400, \"continuousHeight\": 300}}, \"vconcat\": [{\"hconcat\": [{\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"China\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'China'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"Italy\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"Iran\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Iran'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}]}, {\"hconcat\": [{\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"Korea, South\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Korea, South'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"Spain\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Spain'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"Germany\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Germany'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}]}, {\"hconcat\": [{\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"France\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'France'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"US\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'US'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}, {\"layer\": [{\"mark\": \"line\", \"encoding\": {\"color\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"tooltip\": [{\"type\": \"nominal\", \"field\": \"Country/Region\"}, {\"type\": \"quantitative\", \"field\": \"Days\"}, {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}], \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"title\": \"Switzerland\", \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Switzerland'\"}], \"width\": 250}, {\"layer\": [{\"mark\": {\"type\": \"line\", \"opacity\": 0.3}, \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}], \"width\": 250}, {\"mark\": \"text\", \"encoding\": {\"color\": {\"value\": \"steelblue\"}, \"text\": {\"type\": \"nominal\", \"field\": \"Country/Region\"}, \"x\": {\"type\": \"quantitative\", \"field\": \"Days\"}, \"y\": {\"type\": \"quantitative\", \"field\": \"Confirmed/100k\"}}, \"height\": 150, \"transform\": [{\"filter\": \"datum['Country/Region'] == 'Italy'\"}, {\"filter\": \"datum['Days'] == 19\"}], \"width\": 250}]}]}]}], \"data\": {\"name\": \"data-d40a924abb25fe009a562fdd1ec32ed4\"}, \"title\": \"Growth of cases/100k from case 100, compared to Italy\", \"$schema\": \"https://vega.github.io/schema/vega-lite/v4.0.2.json\", \"datasets\": {\"data-d40a924abb25fe009a562fdd1ec32ed4\": [{\"Country/Region\": \"China\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.0393471814350233}, {\"Country/Region\": \"China\", \"Days\": 1, \"Confirmed\": 95, \"Confirmed/100k\": 0.04616831690277369}, {\"Country/Region\": \"China\", \"Days\": 2, \"Confirmed\": 372, \"Confirmed/100k\": 0.06605731189821429}, {\"Country/Region\": \"China\", \"Days\": 3, \"Confirmed\": 858, \"Confirmed/100k\": 0.10095280492270577}, {\"Country/Region\": \"China\", \"Days\": 4, \"Confirmed\": 1527, \"Confirmed/100k\": 0.14898795890086378}, {\"Country/Region\": \"China\", \"Days\": 5, \"Confirmed\": 2329, \"Confirmed/100k\": 0.2065727025338723}, {\"Country/Region\": \"China\", \"Days\": 6, \"Confirmed\": 4961, \"Confirmed/100k\": 0.3955540557035463}, {\"Country/Region\": \"China\", \"Days\": 7, \"Confirmed\": 5539, \"Confirmed/100k\": 0.4370552799178592}, {\"Country/Region\": \"China\", \"Days\": 8, \"Confirmed\": 7593, \"Confirmed/100k\": 0.5845354088732202}, {\"Country/Region\": \"China\", \"Days\": 9, \"Confirmed\": 9254, \"Confirmed/100k\": 0.7037975774198876}, {\"Country/Region\": \"China\", \"Days\": 10, \"Confirmed\": 11343, \"Confirmed/100k\": 0.8537907562844199}, {\"Country/Region\": \"China\", \"Days\": 11, \"Confirmed\": 16082, \"Confirmed/100k\": 1.1940577139862}, {\"Country/Region\": \"China\", \"Days\": 12, \"Confirmed\": 19168, \"Confirmed/100k\": 1.415636914549123}, {\"Country/Region\": \"China\", \"Days\": 13, \"Confirmed\": 23159, \"Confirmed/100k\": 1.7021964056206158}, {\"Country/Region\": \"China\", \"Days\": 14, \"Confirmed\": 26892, \"Confirmed/100k\": 1.970231128790218}, {\"Country/Region\": \"China\", \"Days\": 15, \"Confirmed\": 30039, \"Confirmed/100k\": 2.1961902163376963}, {\"Country/Region\": \"China\", \"Days\": 16, \"Confirmed\": 33562, \"Confirmed/100k\": 2.4491466400522715}, {\"Country/Region\": \"China\", \"Days\": 17, \"Confirmed\": 36266, \"Confirmed/100k\": 2.6432976958922403}, {\"Country/Region\": \"China\", \"Days\": 18, \"Confirmed\": 39281, \"Confirmed/100k\": 2.8597789952108448}, {\"Country/Region\": \"China\", \"Days\": 19, \"Confirmed\": 41806, \"Confirmed/100k\": 3.0410775958010525}, {\"Country/Region\": \"China\", \"Days\": 20, \"Confirmed\": 43838, \"Confirmed/100k\": 3.1869780933849348}, {\"Country/Region\": \"China\", \"Days\": 21, \"Confirmed\": 44211, \"Confirmed/100k\": 3.213760025274102}, {\"Country/Region\": \"China\", \"Days\": 22, \"Confirmed\": 59347, \"Confirmed/100k\": 4.300546408851679}, {\"Country/Region\": \"China\", \"Days\": 23, \"Confirmed\": 65810, \"Confirmed/100k\": 4.764599024936636}, {\"Country/Region\": \"China\", \"Days\": 24, \"Confirmed\": 67865, \"Confirmed/100k\": 4.912150955317973}, {\"Country/Region\": \"China\", \"Days\": 25, \"Confirmed\": 69965, \"Confirmed/100k\": 5.062933949868244}, {\"Country/Region\": \"China\", \"Days\": 26, \"Confirmed\": 71886, \"Confirmed/100k\": 5.2008644891687545}, {\"Country/Region\": \"China\", \"Days\": 27, \"Confirmed\": 73663, \"Confirmed/100k\": 5.328455623128675}, {\"Country/Region\": \"China\", \"Days\": 28, \"Confirmed\": 74071, \"Confirmed/100k\": 5.357750604927015}, {\"Country/Region\": \"China\", \"Days\": 29, \"Confirmed\": 74529, \"Confirmed/100k\": 5.390635658024168}, {\"Country/Region\": \"China\", \"Days\": 30, \"Confirmed\": 75002, \"Confirmed/100k\": 5.424597732510967}, {\"Country/Region\": \"China\", \"Days\": 31, \"Confirmed\": 76453, \"Confirmed/100k\": 5.528781601602608}, {\"Country/Region\": \"China\", \"Days\": 32, \"Confirmed\": 76474, \"Confirmed/100k\": 5.530289431548112}, {\"Country/Region\": \"China\", \"Days\": 33, \"Confirmed\": 76693, \"Confirmed/100k\": 5.5460139438369245}, {\"Country/Region\": \"China\", \"Days\": 34, \"Confirmed\": 77206, \"Confirmed/100k\": 5.582848075362778}, {\"Country/Region\": \"China\", \"Days\": 35, \"Confirmed\": 77618, \"Confirmed/100k\": 5.612430262865021}, {\"Country/Region\": \"China\", \"Days\": 36, \"Confirmed\": 78052, \"Confirmed/100k\": 5.643592081738743}, {\"Country/Region\": \"China\", \"Days\": 37, \"Confirmed\": 78380, \"Confirmed/100k\": 5.6671429494589765}, {\"Country/Region\": \"China\", \"Days\": 38, \"Confirmed\": 78808, \"Confirmed/100k\": 5.6978739597768415}, {\"Country/Region\": \"China\", \"Days\": 39, \"Confirmed\": 79384, \"Confirmed/100k\": 5.739231581139201}, {\"Country/Region\": \"China\", \"Days\": 40, \"Confirmed\": 79588, \"Confirmed/100k\": 5.75387907203837}, {\"Country/Region\": \"China\", \"Days\": 41, \"Confirmed\": 79713, \"Confirmed/100k\": 5.762854250285411}, {\"Country/Region\": \"China\", \"Days\": 42, \"Confirmed\": 79838, \"Confirmed/100k\": 5.771829428532452}, {\"Country/Region\": \"China\", \"Days\": 43, \"Confirmed\": 79989, \"Confirmed/100k\": 5.782671443854875}, {\"Country/Region\": \"China\", \"Days\": 44, \"Confirmed\": 80142, \"Confirmed/100k\": 5.7936570620292525}, {\"Country/Region\": \"China\", \"Days\": 45, \"Confirmed\": 80222, \"Confirmed/100k\": 5.799401176107358}, {\"Country/Region\": \"China\", \"Days\": 46, \"Confirmed\": 80275, \"Confirmed/100k\": 5.803206651684103}, {\"Country/Region\": \"China\", \"Days\": 47, \"Confirmed\": 80312, \"Confirmed/100k\": 5.805863304445228}, {\"Country/Region\": \"China\", \"Days\": 48, \"Confirmed\": 80339, \"Confirmed/100k\": 5.807801942946588}, {\"Country/Region\": \"China\", \"Days\": 49, \"Confirmed\": 80373, \"Confirmed/100k\": 5.810243191429782}, {\"Country/Region\": \"China\", \"Days\": 50, \"Confirmed\": 80384, \"Confirmed/100k\": 5.8110330071155225}, {\"Country/Region\": \"China\", \"Days\": 51, \"Confirmed\": 80397, \"Confirmed/100k\": 5.811966425653213}, {\"Country/Region\": \"China\", \"Days\": 52, \"Confirmed\": 80429, \"Confirmed/100k\": 5.814264071284455}, {\"Country/Region\": \"France\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.14928215288271898}, {\"Country/Region\": \"France\", \"Days\": 1, \"Confirmed\": 30, \"Confirmed/100k\": 0.19406679874753469}, {\"Country/Region\": \"France\", \"Days\": 2, \"Confirmed\": 91, \"Confirmed/100k\": 0.2851289120059933}, {\"Country/Region\": \"France\", \"Days\": 3, \"Confirmed\": 104, \"Confirmed/100k\": 0.30453559188074675}, {\"Country/Region\": \"France\", \"Days\": 4, \"Confirmed\": 188, \"Confirmed/100k\": 0.4299326003022307}, {\"Country/Region\": \"France\", \"Days\": 5, \"Confirmed\": 280, \"Confirmed/100k\": 0.5672721809543322}, {\"Country/Region\": \"France\", \"Days\": 6, \"Confirmed\": 556, \"Confirmed/100k\": 0.9792909229106364}, {\"Country/Region\": \"France\", \"Days\": 7, \"Confirmed\": 852, \"Confirmed/100k\": 1.4211660954434846}, {\"Country/Region\": \"France\", \"Days\": 8, \"Confirmed\": 1029, \"Confirmed/100k\": 1.6853955060458974}, {\"Country/Region\": \"France\", \"Days\": 9, \"Confirmed\": 1112, \"Confirmed/100k\": 1.8092996929385536}, {\"Country/Region\": \"France\", \"Days\": 10, \"Confirmed\": 1687, \"Confirmed/100k\": 2.667672072014188}, {\"Country/Region\": \"France\", \"Days\": 11, \"Confirmed\": 2184, \"Confirmed/100k\": 3.4096043718413016}, {\"Country/Region\": \"France\", \"Days\": 12, \"Confirmed\": 2184, \"Confirmed/100k\": 3.4096043718413016}, {\"Country/Region\": \"France\", \"Days\": 13, \"Confirmed\": 3567, \"Confirmed/100k\": 5.474176546209304}, {\"Country/Region\": \"France\", \"Days\": 14, \"Confirmed\": 4380, \"Confirmed/100k\": 6.687840449145809}, {\"Country/Region\": \"Germany\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.15676264021182154}, {\"Country/Region\": \"Germany\", \"Days\": 1, \"Confirmed\": 29, \"Confirmed/100k\": 0.19173276764368946}, {\"Country/Region\": \"Germany\", \"Days\": 2, \"Confirmed\": 66, \"Confirmed/100k\": 0.23634982678090016}, {\"Country/Region\": \"Germany\", \"Days\": 3, \"Confirmed\": 132, \"Confirmed/100k\": 0.3159370133499788}, {\"Country/Region\": \"Germany\", \"Days\": 4, \"Confirmed\": 352, \"Confirmed/100k\": 0.5812276352469076}, {\"Country/Region\": \"Germany\", \"Days\": 5, \"Confirmed\": 540, \"Confirmed/100k\": 0.8079305303224649}, {\"Country/Region\": \"Germany\", \"Days\": 6, \"Confirmed\": 669, \"Confirmed/100k\": 0.9634873040711186}, {\"Country/Region\": \"Germany\", \"Days\": 7, \"Confirmed\": 910, \"Confirmed/100k\": 1.2541011216945723}, {\"Country/Region\": \"Germany\", \"Days\": 8, \"Confirmed\": 1046, \"Confirmed/100k\": 1.4180989606854009}, {\"Country/Region\": \"Germany\", \"Days\": 9, \"Confirmed\": 1327, \"Confirmed/100k\": 1.7569474368355689}, {\"Country/Region\": \"Germany\", \"Days\": 10, \"Confirmed\": 1778, \"Confirmed/100k\": 2.300793211724273}, {\"Country/Region\": \"Germany\", \"Days\": 11, \"Confirmed\": 1948, \"Confirmed/100k\": 2.5057905104628087}, {\"Country/Region\": \"Germany\", \"Days\": 12, \"Confirmed\": 3545, \"Confirmed/100k\": 4.431559252141878}, {\"Country/Region\": \"Germany\", \"Days\": 13, \"Confirmed\": 4455, \"Confirmed/100k\": 5.528897733624627}, {\"Country/Region\": \"Iran\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.16992609156334193}, {\"Country/Region\": \"Iran\", \"Days\": 1, \"Confirmed\": 106, \"Confirmed/100k\": 0.2995100175037322}, {\"Country/Region\": \"Iran\", \"Days\": 2, \"Confirmed\": 249, \"Confirmed/100k\": 0.4743260685365228}, {\"Country/Region\": \"Iran\", \"Days\": 3, \"Confirmed\": 454, \"Confirmed/100k\": 0.724936491345768}, {\"Country/Region\": \"Iran\", \"Days\": 4, \"Confirmed\": 839, \"Confirmed/100k\": 1.1955950902802044}, {\"Country/Region\": \"Iran\", \"Days\": 5, \"Confirmed\": 1362, \"Confirmed/100k\": 1.83495729091062}, {\"Country/Region\": \"Iran\", \"Days\": 6, \"Confirmed\": 2197, \"Confirmed/100k\": 2.855736330158034}, {\"Country/Region\": \"Iran\", \"Days\": 7, \"Confirmed\": 2783, \"Confirmed/100k\": 3.5721153924322673}, {\"Country/Region\": \"Iran\", \"Days\": 8, \"Confirmed\": 3374, \"Confirmed/100k\": 4.29460690404331}, {\"Country/Region\": \"Iran\", \"Days\": 9, \"Confirmed\": 4608, \"Confirmed/100k\": 5.803159400368232}, {\"Country/Region\": \"Iran\", \"Days\": 10, \"Confirmed\": 5684, \"Confirmed/100k\": 7.118558497649927}, {\"Country/Region\": \"Iran\", \"Days\": 11, \"Confirmed\": 6427, \"Confirmed/100k\": 8.026868469100023}, {\"Country/Region\": \"Iran\", \"Days\": 12, \"Confirmed\": 7022, \"Confirmed/100k\": 8.754249940180514}, {\"Country/Region\": \"Iran\", \"Days\": 13, \"Confirmed\": 7903, \"Confirmed/100k\": 9.831263513326588}, {\"Country/Region\": \"Iran\", \"Days\": 14, \"Confirmed\": 8861, \"Confirmed/100k\": 11.002408806259547}, {\"Country/Region\": \"Iran\", \"Days\": 15, \"Confirmed\": 9936, \"Confirmed/100k\": 12.316585413673884}, {\"Country/Region\": \"Iran\", \"Days\": 16, \"Confirmed\": 11225, \"Confirmed/100k\": 13.892374852703725}, {\"Country/Region\": \"Iran\", \"Days\": 17, \"Confirmed\": 12590, \"Confirmed/100k\": 15.561073521653087}, {\"Country/Region\": \"Italy\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.2564896727411861}, {\"Country/Region\": \"Italy\", \"Days\": 1, \"Confirmed\": 74, \"Confirmed/100k\": 0.3789428068240749}, {\"Country/Region\": \"Italy\", \"Days\": 2, \"Confirmed\": 167, \"Confirmed/100k\": 0.5328366104687865}, {\"Country/Region\": \"Italy\", \"Days\": 3, \"Confirmed\": 298, \"Confirmed/100k\": 0.7496117532371437}, {\"Country/Region\": \"Italy\", \"Days\": 4, \"Confirmed\": 500, \"Confirmed/100k\": 1.0838757138417865}, {\"Country/Region\": \"Italy\", \"Days\": 5, \"Confirmed\": 733, \"Confirmed/100k\": 1.4694376089946661}, {\"Country/Region\": \"Italy\", \"Days\": 6, \"Confirmed\": 973, \"Confirmed/100k\": 1.8665829087229542}, {\"Country/Region\": \"Italy\", \"Days\": 7, \"Confirmed\": 1539, \"Confirmed/100k\": 2.803183907248833}, {\"Country/Region\": \"Italy\", \"Days\": 8, \"Confirmed\": 1881, \"Confirmed/100k\": 3.369115959361644}, {\"Country/Region\": \"Italy\", \"Days\": 9, \"Confirmed\": 2347, \"Confirmed/100k\": 4.140239749667403}, {\"Country/Region\": \"Italy\", \"Days\": 10, \"Confirmed\": 2934, \"Confirmed/100k\": 5.111590961919508}, {\"Country/Region\": \"Italy\", \"Days\": 11, \"Confirmed\": 3703, \"Confirmed/100k\": 6.384110693132231}, {\"Country/Region\": \"Italy\", \"Days\": 12, \"Confirmed\": 4481, \"Confirmed/100k\": 7.6715233730847645}, {\"Country/Region\": \"Italy\", \"Days\": 13, \"Confirmed\": 5728, \"Confirmed/100k\": 9.735024159589663}, {\"Country/Region\": \"Italy\", \"Days\": 14, \"Confirmed\": 7220, \"Confirmed/100k\": 12.203944106233852}, {\"Country/Region\": \"Italy\", \"Days\": 15, \"Confirmed\": 9017, \"Confirmed/100k\": 15.17756953794941}, {\"Country/Region\": \"Italy\", \"Days\": 16, \"Confirmed\": 9994, \"Confirmed/100k\": 16.794281862259982}, {\"Country/Region\": \"Italy\", \"Days\": 17, \"Confirmed\": 12307, \"Confirmed/100k\": 20.62176968839136}, {\"Country/Region\": \"Italy\", \"Days\": 18, \"Confirmed\": 12307, \"Confirmed/100k\": 20.62176968839136}, {\"Country/Region\": \"Italy\", \"Days\": 19, \"Confirmed\": 17505, \"Confirmed/100k\": 29.22327497167319}, {\"Country/Region\": \"Italy\", \"Days\": 20, \"Confirmed\": 21002, \"Confirmed/100k\": 35.0100129431308}, {\"Country/Region\": \"Korea, South\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.20141277115000653}, {\"Country/Region\": \"Korea, South\", \"Days\": 1, \"Confirmed\": 100, \"Confirmed/100k\": 0.39507889725578205}, {\"Country/Region\": \"Korea, South\", \"Days\": 2, \"Confirmed\": 329, \"Confirmed/100k\": 0.8385743260380079}, {\"Country/Region\": \"Korea, South\", \"Days\": 3, \"Confirmed\": 498, \"Confirmed/100k\": 1.1658700791567684}, {\"Country/Region\": \"Korea, South\", \"Days\": 4, \"Confirmed\": 729, \"Confirmed/100k\": 1.6132388304611098}, {\"Country/Region\": \"Korea, South\", \"Days\": 5, \"Confirmed\": 873, \"Confirmed/100k\": 1.8921180520534264}, {\"Country/Region\": \"Korea, South\", \"Days\": 6, \"Confirmed\": 1157, \"Confirmed/100k\": 2.4421298501938287}, {\"Country/Region\": \"Korea, South\", \"Days\": 7, \"Confirmed\": 1662, \"Confirmed/100k\": 3.420143787027995}, {\"Country/Region\": \"Korea, South\", \"Days\": 8, \"Confirmed\": 2233, \"Confirmed/100k\": 4.525977367091973}, {\"Country/Region\": \"Korea, South\", \"Days\": 9, \"Confirmed\": 3046, \"Confirmed/100k\": 6.100482972331928}, {\"Country/Region\": \"Korea, South\", \"Days\": 10, \"Confirmed\": 3632, \"Confirmed/100k\": 7.235366471311772}, {\"Country/Region\": \"Korea, South\", \"Days\": 11, \"Confirmed\": 4231, \"Confirmed/100k\": 8.395426566685366}, {\"Country/Region\": \"Korea, South\", \"Days\": 12, \"Confirmed\": 5082, \"Confirmed/100k\": 10.043525299845516}, {\"Country/Region\": \"Korea, South\", \"Days\": 13, \"Confirmed\": 5517, \"Confirmed/100k\": 10.885972948405641}, {\"Country/Region\": \"Korea, South\", \"Days\": 14, \"Confirmed\": 5984, \"Confirmed/100k\": 11.790393757319613}, {\"Country/Region\": \"Korea, South\", \"Days\": 15, \"Confirmed\": 6489, \"Confirmed/100k\": 12.768407694153776}, {\"Country/Region\": \"Korea, South\", \"Days\": 16, \"Confirmed\": 6937, \"Confirmed/100k\": 13.636031939107651}, {\"Country/Region\": \"Korea, South\", \"Days\": 17, \"Confirmed\": 7210, \"Confirmed/100k\": 14.16474046337642}, {\"Country/Region\": \"Korea, South\", \"Days\": 18, \"Confirmed\": 7374, \"Confirmed/100k\": 14.48235291018989}, {\"Country/Region\": \"Korea, South\", \"Days\": 19, \"Confirmed\": 7409, \"Confirmed/100k\": 14.550136054326911}, {\"Country/Region\": \"Korea, South\", \"Days\": 20, \"Confirmed\": 7651, \"Confirmed/100k\": 15.01880807950289}, {\"Country/Region\": \"Korea, South\", \"Days\": 21, \"Confirmed\": 7765, \"Confirmed/100k\": 15.239587463263474}, {\"Country/Region\": \"Korea, South\", \"Days\": 22, \"Confirmed\": 7875, \"Confirmed/100k\": 15.452620201979823}, {\"Country/Region\": \"Korea, South\", \"Days\": 23, \"Confirmed\": 7982, \"Confirmed/100k\": 15.659842956913007}, {\"Country/Region\": \"Norway\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 2.0322388347293057}, {\"Country/Region\": \"Norway\", \"Days\": 1, \"Confirmed\": 39, \"Confirmed/100k\": 2.7661028583815552}, {\"Country/Region\": \"Norway\", \"Days\": 2, \"Confirmed\": 68, \"Confirmed/100k\": 3.3117966195588684}, {\"Country/Region\": \"Norway\", \"Days\": 3, \"Confirmed\": 97, \"Confirmed/100k\": 3.8574903807361824}, {\"Country/Region\": \"Norway\", \"Days\": 4, \"Confirmed\": 292, \"Confirmed/100k\": 7.526810498997428}, {\"Country/Region\": \"Norway\", \"Days\": 5, \"Confirmed\": 490, \"Confirmed/100k\": 11.252581696001155}, {\"Country/Region\": \"Norway\", \"Days\": 6, \"Confirmed\": 594, \"Confirmed/100k\": 13.209552425740487}, {\"Country/Region\": \"Norway\", \"Days\": 7, \"Confirmed\": 888, \"Confirmed/100k\": 18.741758142503603}, {\"Country/Region\": \"Norway\", \"Days\": 8, \"Confirmed\": 982, \"Confirmed/100k\": 20.510558609767997}, {\"Country/Region\": \"Spain\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.25682870610404146}, {\"Country/Region\": \"Spain\", \"Days\": 1, \"Confirmed\": 45, \"Confirmed/100k\": 0.353139470893057}, {\"Country/Region\": \"Spain\", \"Days\": 2, \"Confirmed\": 102, \"Confirmed/100k\": 0.4751331062924767}, {\"Country/Region\": \"Spain\", \"Days\": 3, \"Confirmed\": 139, \"Confirmed/100k\": 0.5543219573412228}, {\"Country/Region\": \"Spain\", \"Days\": 4, \"Confirmed\": 280, \"Confirmed/100k\": 0.8560956870134715}, {\"Country/Region\": \"Spain\", \"Days\": 5, \"Confirmed\": 380, \"Confirmed/100k\": 1.0701196087668394}, {\"Country/Region\": \"Spain\", \"Days\": 6, \"Confirmed\": 553, \"Confirmed/100k\": 1.4403809934001657}, {\"Country/Region\": \"Spain\", \"Days\": 7, \"Confirmed\": 953, \"Confirmed/100k\": 2.2964766804136367}, {\"Country/Region\": \"Spain\", \"Days\": 8, \"Confirmed\": 1575, \"Confirmed/100k\": 3.6277054737195855}, {\"Country/Region\": \"Spain\", \"Days\": 9, \"Confirmed\": 2157, \"Confirmed/100k\": 4.873324698324187}, {\"Country/Region\": \"Spain\", \"Days\": 10, \"Confirmed\": 2157, \"Confirmed/100k\": 4.873324698324187}, {\"Country/Region\": \"Spain\", \"Days\": 11, \"Confirmed\": 5112, \"Confirmed/100k\": 11.197731586136207}, {\"Country/Region\": \"Spain\", \"Days\": 12, \"Confirmed\": 6271, \"Confirmed/100k\": 13.678268839257742}, {\"Country/Region\": \"Switzerland\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 1.3385712958884843}, {\"Country/Region\": \"Switzerland\", \"Days\": 1, \"Confirmed\": 100, \"Confirmed/100k\": 2.5127566431590846}, {\"Country/Region\": \"Switzerland\", \"Days\": 2, \"Confirmed\": 154, \"Confirmed/100k\": 3.1468167306852086}, {\"Country/Region\": \"Switzerland\", \"Days\": 3, \"Confirmed\": 223, \"Confirmed/100k\": 3.957004620301923}, {\"Country/Region\": \"Switzerland\", \"Days\": 4, \"Confirmed\": 260, \"Confirmed/100k\": 4.391453198792045}, {\"Country/Region\": \"Switzerland\", \"Days\": 5, \"Confirmed\": 377, \"Confirmed/100k\": 5.7652500550986465}, {\"Country/Region\": \"Switzerland\", \"Days\": 6, \"Confirmed\": 538, \"Confirmed/100k\": 7.655688464204314}, {\"Country/Region\": \"Switzerland\", \"Days\": 7, \"Confirmed\": 538, \"Confirmed/100k\": 7.655688464204314}, {\"Country/Region\": \"Switzerland\", \"Days\": 8, \"Confirmed\": 1025, \"Confirmed/100k\": 13.373971105412135}, {\"Country/Region\": \"Switzerland\", \"Days\": 9, \"Confirmed\": 1245, \"Confirmed/100k\": 15.957178869407455}, {\"Country/Region\": \"US\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.03606715942271932}, {\"Country/Region\": \"US\", \"Days\": 1, \"Confirmed\": 31, \"Confirmed/100k\": 0.04554243011851846}, {\"Country/Region\": \"US\", \"Days\": 2, \"Confirmed\": 99, \"Confirmed/100k\": 0.06632689487059401}, {\"Country/Region\": \"US\", \"Days\": 3, \"Confirmed\": 144, \"Confirmed/100k\": 0.0800813200741734}, {\"Country/Region\": \"US\", \"Days\": 4, \"Confirmed\": 284, \"Confirmed/100k\": 0.122872865151976}, {\"Country/Region\": \"US\", \"Days\": 5, \"Confirmed\": 400, \"Confirmed/100k\": 0.15832871678786953}, {\"Country/Region\": \"US\", \"Days\": 6, \"Confirmed\": 465, \"Confirmed/100k\": 0.17819621985970646}, {\"Country/Region\": \"US\", \"Days\": 7, \"Confirmed\": 841, \"Confirmed/100k\": 0.2931220837829477}, {\"Country/Region\": \"US\", \"Days\": 8, \"Confirmed\": 1163, \"Confirmed/100k\": 0.3915426374618936}, {\"Country/Region\": \"US\", \"Days\": 9, \"Confirmed\": 1545, \"Confirmed/100k\": 0.508302424745612}, {\"Country/Region\": \"US\", \"Days\": 10, \"Confirmed\": 2061, \"Confirmed/100k\": 0.6660198337466559}, {\"Country/Region\": \"US\", \"Days\": 11, \"Confirmed\": 2609, \"Confirmed/100k\": 0.8335181673369116}, {\"Country/Region\": \"United Kingdom\", \"Days\": 0, \"Confirmed\": 0, \"Confirmed/100k\": 0.17446497270503022}, {\"Country/Region\": \"United Kingdom\", \"Days\": 1, \"Confirmed\": 48, \"Confirmed/100k\": 0.2466573752036634}, {\"Country/Region\": \"United Kingdom\", \"Days\": 2, \"Confirmed\": 91, \"Confirmed/100k\": 0.3113297357753557}, {\"Country/Region\": \"United Kingdom\", \"Days\": 3, \"Confirmed\": 158, \"Confirmed/100k\": 0.4120982975963645}, {\"Country/Region\": \"United Kingdom\", \"Days\": 4, \"Confirmed\": 206, \"Confirmed/100k\": 0.4842907000949977}, {\"Country/Region\": \"United Kingdom\", \"Days\": 5, \"Confirmed\": 268, \"Confirmed/100k\": 0.5775392199890655}, {\"Country/Region\": \"United Kingdom\", \"Days\": 6, \"Confirmed\": 343, \"Confirmed/100k\": 0.6903398488931799}, {\"Country/Region\": \"United Kingdom\", \"Days\": 7, \"Confirmed\": 343, \"Confirmed/100k\": 0.6903398488931799}, {\"Country/Region\": \"United Kingdom\", \"Days\": 8, \"Confirmed\": 685, \"Confirmed/100k\": 1.2047107166959414}, {\"Country/Region\": \"United Kingdom\", \"Days\": 9, \"Confirmed\": 1027, \"Confirmed/100k\": 1.719081584498703}]}}, {\"mode\": \"vega-lite\"});\n",
+       "</script>"
+      ],
+      "text/plain": [
+       "alt.VConcatChart(...)"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "\n",
+       "<p style=\"font-size: smaller\">Data Sources: \n",
+       "  <a href=\"https://github.com/CSSEGISandData/COVID-19\">JHU CSSE</a>,\n",
+       "  <a href=\"https://data.worldbank.org/indicator/SP.POP.TOTL\">World Bank</a>,\n",
+       "  <a href=\"https://worldmap.harvard.edu/data/geonode:country_centroids_az8\">Harvard Worldmap</a>\n",
+       "</p>"
+      ],
+      "text/plain": [
+       "<IPython.core.display.HTML object>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "sort_order = growth_in_value_df.groupby(\n",
+    "    'Country/Region').max().sort_values(\n",
+    "    'Confirmed', ascending=False).index.tolist()\n",
+    "chart = facetted_growth_plot(increase_df, \n",
+    "                             'Confirmed/100k',\n",
+    "                             sort_order,\n",
+    "                             'Italy',\n",
+    "                             \"Growth of cases/100k from case 100, compared to Italy\")\n",
+    "display(chart)\n",
+    "display(HTML('''\n",
+    "<p style=\"font-size: smaller\">Data Sources: \n",
+    "  <a href=\"https://github.com/CSSEGISandData/COVID-19\">JHU CSSE</a>,\n",
+    "  <a href=\"https://data.worldbank.org/indicator/SP.POP.TOTL\">World Bank</a>,\n",
+    "  <a href=\"https://worldmap.harvard.edu/data/geonode:country_centroids_az8\">Harvard Worldmap</a>\n",
+    "</p>'''))"
    ]
   }
  ],
@@ -576,20 +910,20 @@
    "version": "3.7.6"
   },
   "papermill": {
-   "duration": 2.560957,
-   "end_time": "2020-03-15T18:37:36.125203",
+   "duration": 3.523833,
+   "end_time": "2020-03-16T19:37:33.679489",
    "environment_variables": {},
    "exception": null,
-   "input_path": "/tmp/fer34kve/notebooks/Dashboard.ipynb",
+   "input_path": "/tmp/30edqohi/notebooks/Dashboard.ipynb",
    "output_path": "runs/Dashboard.run.ipynb",
    "parameters": {
-    "PAPERMILL_INPUT_PATH": "/tmp/fer34kve/notebooks/Dashboard.ipynb",
+    "PAPERMILL_INPUT_PATH": "/tmp/30edqohi/notebooks/Dashboard.ipynb",
     "PAPERMILL_OUTPUT_PATH": "runs/Dashboard.run.ipynb",
-    "geodata_path": "/tmp/fer34kve/data/geodata/geo_data.csv",
-    "rates_folder": "/tmp/fer34kve/data/covid-19_rates",
-    "ts_folder": "/tmp/fer34kve/data/covid-19_jhu-csse"
+    "geodata_path": "/tmp/30edqohi/data/geodata/geo_data.csv",
+    "rates_folder": "/tmp/30edqohi/data/covid-19_rates",
+    "ts_folder": "/tmp/30edqohi/data/covid-19_jhu-csse"
    },
-   "start_time": "2020-03-15T18:37:33.564246",
+   "start_time": "2020-03-16T19:37:30.155656",
    "version": "1.1.0"
   }
  },
-- 
GitLab