Update.
[python.git] / covid19.py
index 0fd9ecc..ea79544 100755 (executable)
@@ -1,12 +1,17 @@
 #!/usr/bin/env python
 
+# Any copyright is dedicated to the Public Domain.
+# https://creativecommons.org/publicdomain/zero/1.0/
+
+# Written by Francois Fleuret <francois@fleuret.org>
+
 import os, time, math
 import numpy, csv
 import matplotlib.pyplot as plt
 import matplotlib.dates as mdates
 import urllib.request
 
-url = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv'
+url = 'https://github.com/CSSEGISandData/COVID-19/raw/master/csse_covid_19_data/csse_covid_19_time_series/time_series_19-covid-Confirmed.csv'
 
 file = 'time_series_19-covid-Confirmed.csv'
 
@@ -29,7 +34,6 @@ with open(file, newline='') as csvfile:
                 country = field
                 if not country in nb_cases:
                     nb_cases[country] = numpy.zeros(len(times))
-                # print(country)
             if row_nb == 0 and col_nb >= time_col:
                 times.append(time.mktime(time.strptime(field, '%m/%d/%y')))
             if row_nb == 1 and col_nb == time_col:
@@ -44,8 +48,7 @@ with open(file, newline='') as csvfile:
 fig = plt.figure()
 ax = fig.add_subplot(1, 1, 1)
 
-ax.grid(color='gray', linestyle='-', linewidth=0.25)
-
+ax.yaxis.grid(color='gray', linestyle='-', linewidth=0.25)
 ax.set_title('Nb. of COVID-19 cases')
 ax.set_xlabel('Date', labelpad = 10)
 ax.set_yscale('log')
@@ -54,17 +57,23 @@ myFmt = mdates.DateFormatter('%b %d')
 ax.xaxis.set_major_formatter(myFmt)
 dates = mdates.epoch2num(times)
 
-for label, color in [ ('World', 'blue'),
-                      ('Switzerland', 'red'),
-                      ('France', 'green'),
-                      ('South Korea', 'gray'),
-                      ('Mainland China', 'orange') ]:
-    ax.plot(dates, nb_cases[label], color = color, label = label)
+print('Countries:')
+print(nb_cases.keys())
+
+for key, color, label in [
+        ('World', 'blue', 'World'),
+        ('Switzerland', 'red', 'Switzerland'),
+        ('France', 'lightgreen', 'France'),
+        ('US', 'black', 'USA'),
+        ('Korea, South', 'gray', 'South Korea'),
+        ('Italy', 'purple', 'Italy'),
+        ('China', 'orange', 'China')
+]:
+    ax.plot(dates, nb_cases[key], color = color, label = label, linewidth=2)
 
-# ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), frameon = False)
 ax.legend(frameon = False)
 
 plt.show()
-# fig.savefig('covid19.svg')
+fig.savefig('covid19.png')
 
 ######################################################################