{
function sumaAlDia(d) {
return (
d.Segunda.nuevasEn6Meses +
d.Unica.nuevasEn6Meses +
d.Refuerzo.nuevasEn6Meses +
d.Cuarta.nuevasEn6Meses
);
}
function desgloseAlDia(d) {
return {
segunda: d.Segunda.nuevasEn6Meses,
unica: d.Unica.nuevasEn6Meses,
refuerzo: d.Refuerzo.nuevasEn6Meses,
cuarta: d.Cuarta.nuevasEn6Meses
};
}
const dataPlot = _.chain(dataEvoluciónVacunacion6Meses)
.map((d) => {
return _.map(desgloseAlDia(d.stats[targetLocation]), (value, key) => {
const record = {};
record.fecha = d.fecha;
record.tipo = key;
record.alDia = value;
return record;
});
})
.flatten()
.sortBy((d) => d.fecha)
.filter((d) => ["segunda", "unica", "refuerzo", "cuarta"].includes(d.tipo))
.value();
const maxDate = _.chain(dataPlot)
.map((d) => d.fecha)
.max()
.value();
const date6MonthsAgo = moment(maxDate)
.subtract(6, "months")
.format("YYYY-MM-DD");
const date12MonthsAgo = moment(maxDate)
.subtract(12, "months")
.format("YYYY-MM-DD");
const maxValue = _.chain(dataPlot)
.map((d) => d.alDia)
.max()
.value();
return Plot.plot({
y: {
grid: true,
label: "Vacunas al día"
},
color: {
legend: true,
domain: color.domain(),
range: color.range()
},
marginRight: 100,
marginLeft: 100,
marks: [
Plot.areaY(
dataPlot.filter(
(d) =>
d.tipo == "refuerzo" ||
d.tipo == "cuarta" ||
d.tipo == "segunda" ||
d.tipo == "unica"
),
{
x: (d) => new Date(d.fecha),
y: "alDia",
fill: "tipo"
}
),
Plot.ruleX([
new Date(maxDate),
new Date(date12MonthsAgo),
new Date(date6MonthsAgo)
])
]
});
}