Advertisement
CleverCode

COVID-19

Mar 18th, 2020
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.18 KB | None | 0 0
  1. import json
  2. import matplotlib.pyplot as plt
  3. from requests import get
  4. from typing import Any, List, Dict
  5.  
  6. colours = ('b', 'g', 'r', 'c', 'm', 'y', 'k', '#4F7942', '#00FFFF', '#FF2400')
  7.  
  8. data_url = ("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-json/dpc-covid19-ita-andamento-nazionale.json")
  9.  
  10. general_plot_parameters = (
  11.     'ricoverati_con_sintomi',
  12.     'terapia_intensiva',
  13.     'totale_ospedalizzati',
  14.     'isolamento_domiciliare',
  15.     'totale_positivi',
  16.     'varizione_totale_positivi',
  17.     'nuovi_positivi',
  18.     'dimessi_guariti',
  19.     'deceduti',
  20.     'totale_casi',
  21.     'tamponi'
  22. )
  23.  
  24. parameters = (
  25.     'ricoverati_con_sintomi',
  26.     'terapia_intensiva',
  27.     'totale_ospedalizzati',
  28.     'isolamento_domiciliare',
  29.     'totale_positivi',
  30.     'varizione_totale_positivi',
  31.     'nuovi_positivi',
  32.     'dimessi_guariti',
  33.     'deceduti',
  34.     'totale_casi',
  35.     'tamponi'
  36. )
  37.  
  38. def draw_general_plot(data):
  39.     global general_plot_parameters
  40.  
  41.     plt.figure(1)
  42.  
  43.     for k, parameter in enumerate(general_plot_parameters):
  44.         plt.plot(*zip(*((i['data'].split()[0][-2:], i[parameter]) for i in data)), color=colours[k], label=parameter.replace('_', ' ').title())
  45.  
  46.     plt.legend(loc="upper left")
  47.     plt.xticks(rotation=90)
  48.     plt.xlabel('Giorno')
  49.     plt.ylabel('Numero Di Persone')
  50.     plt.grid(True)
  51.     plt.savefig("Grafici_Covid19\Grafico Generale.png")
  52.  
  53.  
  54. def draw_particular_plot(data, parameter: str, code: int):
  55.     plt.figure(code+2)
  56.     plt.plot(*zip(*((i['data'].split()[0][-2:], i[parameter]) for i in data)), color=colours[code], label=parameter.replace('_', ' ').title())
  57.     plt.legend(loc="upper left")
  58.     plt.xticks(rotation=90)
  59.     plt.xlabel('Giorno')
  60.     plt.ylabel('Numero Di Persone')
  61.     plt.grid(True)
  62.     plt.savefig(f"Grafici_Covid19\{parameter}.png")
  63.  
  64. def draw_plots() -> List[Dict[str, Any]]:
  65.     data = retrieve_data(data_url)
  66.     draw_general_plot(data)
  67.  
  68.     for i, parameter in enumerate(parameters):
  69.         draw_particular_plot(data, parameter, i)
  70.    
  71.     return data
  72.  
  73. def retrieve_data(url: str) -> List[Dict[str, Any]]:
  74.     return json.loads(get(data_url).text)
  75.  
  76. if __name__ == "__main__":
  77.     draw_plots()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement