From c8b33c376f7cb5fccb1efea317b440e7656fd81e Mon Sep 17 00:00:00 2001 From: fordprefect Date: Fri, 27 Mar 2020 16:46:34 +0100 Subject: [PATCH] add delay from USA plot (leader in infection number as of today) --- delay_from_usa.py | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 delay_from_usa.py diff --git a/delay_from_usa.py b/delay_from_usa.py new file mode 100644 index 0000000..1119e21 --- /dev/null +++ b/delay_from_usa.py @@ -0,0 +1,80 @@ +""" +Plot delay of countries +""" +import matplotlib.pyplot as pp +import numpy as np +name="delay" + +def plot(data, countries): + for loc in data: + if loc not in countries: + continue + time, new_cases, new_deaths, total_cases, total_deaths = data[loc] + + pp.figure(name) + day_of_above_hundred_cases = np.argwhere(np.array(total_cases) > 100)[0][0] + + new_time_axis = np.arange(len(time)) - day_of_above_hundred_cases + pp.plot(new_time_axis, np.array(total_cases), label=f"{loc} - {day_of_above_hundred_cases}", marker=".") + + pp.yscale("log") + pp.xticks(rotation=45) + pp.legend(frameon=False) + pp.tight_layout() + + pp.savefig(name+".png") + + # plot delay + pp.clf() + delay = {} + tcases = [50, 100, 500, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000, 9000] + list(np.arange(10000, np.max(data["United States"][3]), 2500)) + + time_us = data["United States"][0] + try: + case_date_us = np.array([time_us[np.argwhere(np.array(data["United States"][3]) > cases)[0][0]] for cases in tcases]) + except: + print("workaround delay_us:40") + case_date_us = [] + usdat = np.array(data["United States"][3]) + for cases in tcases: + try: + casepos = np.argwhere(usdat > cases)[0][0] + casetime = time_us[casepos] + except: + print(f"case date for {cases} not found") + casetime = np.nan + #continue + case_date_us.append(casetime) + case_date_us = np.array(case_date_us) + + total_cases_us = data["United States"][3] + for loc in data: + if loc not in countries: + continue + if loc in ["United States", "World"]: + continue + this_delay = [] + for i, cases in enumerate(tcases): + try: + case_date = data[loc][0][np.argwhere(np.array(data[loc][3]) > cases)[0][0]] + except: + this_delay.append(np.nan) + continue + #case_date = np.array([time_us[np.argwhere(np.array(data[loc][3]) > cases)[0][0]] for cases in tcases]) + + this_delay.append((case_date_us[i] - case_date).days) + + delay[loc] = this_delay + + sort = np.argsort(delay) + + for loc in delay: + pp.plot(tcases, delay[loc], label=loc, marker=".") + #pp.plot(np.arange(len(delay)), np.array(delay)[sort] - np.min(delay), marker="o", linestyle="") + #pp.xticks(ticks=np.arange(len(delay)), labels=np.array(d_loc)[sort]) + pp.xticks(rotation=45) + pp.legend(frameon=False) + pp.xlabel("total cases") + pp.ylabel("delay to United States [days]") + pp.tight_layout() + pp.savefig(name+"_usa.png")