Published
Edited
Jan 6, 2022
Insert cell
Insert cell
Insert cell
Insert cell
{
ixmaps.waitForMap('map1',map => map
.setData(final_data,{"name":"PCM_DPC_COVID_LAST_INCID_100000_CUMUL_7","type":"jsonDB"})
.setView([41.98807738309159,12.54638671875],5)
.loadProject(project(28),"keepview")
);
return project(28);
}
Insert cell
{
ixmaps.waitForMap('map2',map => map
.setData(final_data,{"name":"PCM_DPC_COVID_LAST_INCID_100000_CUMUL_7","type":"jsonDB"})
.setView([41.98807738309159,12.54638671875],5)
.loadProject(project(21),"keepview")
);
return project(21);
}
Insert cell
{
ixmaps.waitForMap('map3',map => map
.setData(final_data,{"name":"PCM_DPC_COVID_LAST_INCID_100000_CUMUL_7","type":"jsonDB"})
.setView([41.98807738309159,12.54638671875],5)
.loadProject(project(14),"keepview")
);
return project(14);
}
Insert cell
{
ixmaps.waitForMap('map4',map => map
.setData(final_data,{"name":"PCM_DPC_COVID_LAST_INCID_100000_CUMUL_7","type":"jsonDB"})
.setView([41.98807738309159,12.54638671875],5)
.loadProject(project(7),"keepview")
);
return project(7);
}
Insert cell
{
ixmaps.waitForMap('map5',map => map
.setData(final_data,{"name":"PCM_DPC_COVID_LAST_INCID_100000_CUMUL_7","type":"jsonDB"})
.loadProject(project(0))
);
return project(0);
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
data = d3.csv("https://raw.githubusercontent.com/pcm-dpc/COVID-19/master/dati-province/dpc-covid19-ita-province.csv")
Insert cell
Inputs.Table(data)
Insert cell
Insert cell
pop = d3.csv("https://s3.eu-west-1.amazonaws.com/data.ixmaps.com/ISTAT/DCIS_POPRES_Province_2019.csv")
Insert cell
Inputs.Table(pop)
Insert cell
Insert cell
Insert cell
pivot = __process(Data.import({"source":data,"type":"json"}));
Insert cell
Inputs.Table(pivot.json())
Insert cell
// make lookupArray: COD_PROV ==> population
popA = Data.import({"source":pop,"type":"json"}).lookupArray("Value","COD_PROV");
Insert cell
Insert cell
Insert cell
lastColumn = pivot.columnNames().length - 2;
Insert cell
Insert cell
Insert cell
Insert cell
pivot_2 = pivot
.addColumn({destination:"incidenza_0"},function(row){
var last = (Number(row[lastColumn] ));
var before = (Number(row[lastColumn-7]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_0_before"},function(row){
var last = (Number(row[lastColumn-1] ));
var before = (Number(row[lastColumn-7-1]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_7"},function(row){
var last = (Number(row[lastColumn-7] ));
var before = (Number(row[lastColumn-7-7]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_7_before"},function(row){
var last = (Number(row[lastColumn-7-1] ));
var before = (Number(row[lastColumn-7-7-1]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_14"},function(row){
var last = (Number(row[lastColumn-14] ));
var before = (Number(row[lastColumn-14-7]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_14_before"},function(row){
var last = (Number(row[lastColumn-14-1] ));
var before = (Number(row[lastColumn-14-7-1]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_21"},function(row){
var last = (Number(row[lastColumn-21] ));
var before = (Number(row[lastColumn-21-7]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_21_before"},function(row){
var last = (Number(row[lastColumn-21-1] ));
var before = (Number(row[lastColumn-21-7-1]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_28"},function(row){
var last = (Number(row[lastColumn-28] ));
var before = (Number(row[lastColumn-28-7]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
})
.addColumn({destination:"incidenza_28_before"},function(row){
var last = (Number(row[lastColumn-28-1] ));
var before = (Number(row[lastColumn-28-7-1]));
return (Number(last-before)/popA[Number(row[0])]*100000).toFixed(2);
});

Insert cell
Insert cell
final_data = pivot_2.subtable({fields:["codice_provincia","lat","long","denominazione_provincia","incidenza_0","incidenza_0_before","incidenza_7","incidenza_7_before","incidenza_14","incidenza_14_before","incidenza_21","incidenza_21_before","incidenza_28","incidenza_28_before"]})
Insert cell
Inputs.Table(final_data.json())
Insert cell
Insert cell
Insert cell
__process = function (data) {

// make pivot table with columns per day
data.column("data").map(function (value) {
return value.split(" ")[0];
});
data = data.select("WHERE \"denominazione_provincia\" NOT \"In fase\" AND \"denominazione_provincia\" NOT \"Fuori\"");

var pivot = data.pivot({
lead: "codice_provincia",
columns: "data",
value: "totale_casi",
keep: ["lat","long","denominazione_provincia"]
});
return pivot;
};

Insert cell
---
# Appendice
Insert cell
Inputs = require("@observablehq/inputs@0.7.21/dist/inputs.umd.min.js")
Insert cell
ixmaps = require('https://gjrichter.github.io/ixmaps/ui/js/htmlgui_api.js')
Insert cell
Data = require('https://gjrichter.github.io/data.js/data.js')
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more