import os.path
from datetime import datetime
import urllib.request
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
from matplotlib.cbook import get_sample_data
import numpy as np
import pandas as pd
#Download data, refresca cada 1 hora
filename = 'paises_confirmed_jh.csv'
if not os.path.isfile(filename) or os.stat(filename).st_mtime + 3600 < datetime.now().timestamp():
url = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_confirmed_global.csv"
urllib.request.urlretrieve(url, filename)
dataRaw = pd.read_csv(filename)
dataRaw = dataRaw.drop(['Province/State', 'Lat','Long'], axis=1)
data = dataRaw.transpose()
data = data.reset_index()
data.columns = data.iloc[0]
data = data.iloc[1:]
data['Fecha'] = pd.to_datetime(data['Country/Region'])
fig, ax = plt.subplots(figsize=(20, 15))
plt.ylabel('New Confirmed Last Week', fontsize=25)
plt.xlabel('Confirmed', fontsize=25)
#plt.title('Casos por pais', fontsize=30)
countries = ['Chile','Japan','Brazil','Spain','Greece']
colors = ['red','#7F6000','#03B152','#FFC000','#002060']
image_path = get_sample_data('ada.png')
image = plt.imread(image_path)
im = OffsetImage(image, zoom=0.04)
for i, columnName in enumerate(countries):
yvals = data[columnName].diff().rolling(7).sum()
index100 = data.loc[data[columnName] > 100].index[0]
xvals = np.where((data.index < index100), np.nan, data[columnName])
ax.plot(xvals, yvals, label = columnName, lw=3, color=colors[i], linewidth=2)
ab = AnnotationBbox(im, (xvals[-1]*1.05, yvals.iloc[-1]), xycoords='data', frameon=False)
ax.add_artist(ab)
plt.style.use('ggplot')
plt.xticks(fontsize=16)
plt.xscale("log")
plt.yscale("log")
plt.yticks(fontsize=16)
plt.tick_params(axis='x', which='major')
sFormatter = ScalarFormatter() #useOffset=False, useMathText=True
#sFormatter.set_powerlimits((-3, 4))
sFormatter.set_scientific(False)
ax.yaxis.set_major_formatter(sFormatter)
ax.xaxis.set_major_formatter(sFormatter)
ax.get_legend_handles_labels()
ax.legend(fontsize=20, loc=0, facecolor = 'white', title = 'Legend', title_fontsize = 25)
plt.show()