Files
coronavis/delay_from_usa.py
2020-12-21 12:04:37 +01:00

83 lines
3.0 KiB
Python

"""
Plot delay of countries
"""
import matplotlib.pyplot as pp
import numpy as np
name="delay"
def plot(data, countries, pop, **kwargs):
figsize = (10,5)
for loc in data:
if loc not in countries:
continue
time, new_cases, new_deaths, total_cases, total_deaths, total_vaccinations = data[loc]['time'], data[loc]['new_cases'], data[loc]['new_deaths'], data[loc]['total_cases'], data[loc]['total_deaths'], data[loc]['total_vaccinations']
pp.figure(name, figsize=figsize)
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, 80500,81000,81500,82000,83000,835000,84000,84500] + list(np.arange(10000, np.max(data["United States"][3]), 2500))
tcases.sort()
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("img/"+name+"_usa.png")