Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import matplotlib.pyplot as plt
- from requests import get
- from typing import Any, List, Dict
- colours = ('b', 'g', 'r', 'c', 'm', 'y', 'k', '#4F7942', '#00FFFF', '#FF2400')
- data_url = ("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-json/dpc-covid19-ita-andamento-nazionale.json")
- general_plot_parameters = (
- 'ricoverati_con_sintomi',
- 'terapia_intensiva',
- 'totale_ospedalizzati',
- 'isolamento_domiciliare',
- 'totale_positivi',
- 'varizione_totale_positivi',
- 'nuovi_positivi',
- 'dimessi_guariti',
- 'deceduti',
- 'totale_casi',
- 'tamponi'
- )
- parameters = (
- 'ricoverati_con_sintomi',
- 'terapia_intensiva',
- 'totale_ospedalizzati',
- 'isolamento_domiciliare',
- 'totale_positivi',
- 'varizione_totale_positivi',
- 'nuovi_positivi',
- 'dimessi_guariti',
- 'deceduti',
- 'totale_casi',
- 'tamponi'
- )
- def draw_general_plot(data):
- global general_plot_parameters
- plt.figure(1)
- for k, parameter in enumerate(general_plot_parameters):
- plt.plot(*zip(*((i['data'].split()[0][-2:], i[parameter]) for i in data)), color=colours[k], label=parameter.replace('_', ' ').title())
- plt.legend(loc="upper left")
- plt.xticks(rotation=90)
- plt.xlabel('Giorno')
- plt.ylabel('Numero Di Persone')
- plt.grid(True)
- plt.savefig("Grafici_Covid19\Grafico Generale.png")
- def draw_particular_plot(data, parameter: str, code: int):
- plt.figure(code+2)
- plt.plot(*zip(*((i['data'].split()[0][-2:], i[parameter]) for i in data)), color=colours[code], label=parameter.replace('_', ' ').title())
- plt.legend(loc="upper left")
- plt.xticks(rotation=90)
- plt.xlabel('Giorno')
- plt.ylabel('Numero Di Persone')
- plt.grid(True)
- plt.savefig(f"Grafici_Covid19\{parameter}.png")
- def draw_plots() -> List[Dict[str, Any]]:
- data = retrieve_data(data_url)
- draw_general_plot(data)
- for i, parameter in enumerate(parameters):
- draw_particular_plot(data, parameter, i)
- return data
- def retrieve_data(url: str) -> List[Dict[str, Any]]:
- return json.loads(get(data_url).text)
- if __name__ == "__main__":
- draw_plots()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement