agesByDpto = {
const brush = vl.selectMulti().encodings('y');
const ageChart = vl
.data(data)
.transform(
vl.filter(brush),
vl.calculate("floor(datum.edad/10)*10").as("grupo_edad"),
vl.groupby(["departamento_nom", 'grupo_edad']).aggregate(vl.count().as('Count')),
vl.window(vl.sum('Count')
.as('total_count')
).frame([null, null])
.groupby(["departamento_nom"])
.sort(vl.field('grupo_edad')),
vl.calculate("datum.Count/datum.total_count ").as("pct"),
)
.encode(
vl.y()
.fieldN("departamento_nom").axis({labelFontSize:12}),
vl.size().fieldQ("pct")
.scale({rangcoe: [0, 700]})
.legend({ format: "0.1%" }).title("% casos reportados"),
vl.color().fieldQ("pct").legend({ format: "0.1%" }).title("% casos reportados"),
vl.x().fieldO("grupo_edad").title("Edad"),
vl.detail().fieldQ("Count")
)
.layer([
vl.markCircle({tooltip: true}),
vl.markText({tooltip: true})
.encode(
vl.text().fieldQ("pct").format("0.1%").title("% casos reportados"),
vl.color().value("#302E5F"),
vl.size().value(10)
)
])
.width(width*.6)
.height(500)
.config({
padding: { bottom : 20, top: 20 }
});
const chart = await vl
.data(data)
.vconcat(
vl.hconcat(
makeHist(vl.y().fieldN("tipo").title("Tipo de Infección"),
brush,
),
makeHist(vl.y().fieldN("sexo").title("Género"),
brush),
),
vl.hconcat(makeHist(vl.y().fieldN("atenci_n").title("Tipo de Atención"),
brush)
),
ageChart
)
.render();
return html`
<style>* { font-family: "sans-serif"; }</style>
<h2>Distribución de Edades Casos Confirmados de Coronavirus por Departamentos</h2>
<div>Seleccione alguna de las barras para filtrar</div>
${chart}
<div>${footer3}
<br>
<a href="https://johnguerra.co">John Alexis Guerra Gómez</a> <a href="https://twitter.com/duto_guerra"> @duto_guerra</a> <a href="https://twitter.com/guerravis"> @guerravis</a>
<br>
<a href="https://johnguerra.co/coronavirus">https://johnguerra.co/coronavirus</a>
<br>
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a>
</div>
`;
}