echarts = require("echarts@5")
// Carregar dados
// Carregar dados
data = FileAttachment("./fontes/sim_grupos_cid.json").json()
// Preparar lista de estados ordenada alfabeticamente
estados = {
const unique_estados = [...new Set(data.map(d => d.nome))];
const sorted_estados = unique_estados.filter(e => e !== "Brasil").sort();
return ["Brasil", ...sorted_estados];
}
// Input de seleção
viewof selected_estado = Inputs.select(estados, {
label: "Selecione o Estado:",
value: "Brasil"
})
// Filtrar dados baseado na seleção
filtered_data = data.filter(d => d.nome === selected_estado)
// Preparar dados para o gráfico
chart_data = {
const sorted_data = filtered_data.sort((a, b) => a.mortes - b.mortes);
const grupos = sorted_data.map(d => d.grupo);
const mortes = sorted_data.map(d => d.mortes);
return {
title: {
text: `Mortalidade por Grupos de Doenças - ${selected_estado}`,
left: 'center',
textStyle: {
fontSize: 20
}
},
tooltip: {
trigger: 'axis',
formatter: function(params) {
if (params && params[0]) {
const name = params[0].name;
const value = params[0].value.toLocaleString('pt-BR');
return `${name}: <strong>${value}</strong> mortes`;
}
return '';
}
},
xAxis: {
type: 'value',
name: 'Número de Mortes',
nameLocation: 'middle',
nameGap: 40,
axisLabel: {
formatter: function(value) {
if (value >= 1000) {
return (value / 1000).toFixed(0) + 'k';
}
return value;
}
}
},
yAxis: {
type: 'category',
data: grupos,
axisLabel: {
interval: 0,
fontSize: 14
}
},
series: [{
data: mortes,
type: 'bar',
itemStyle: {
color: '#72874E80'
},
emphasis: {
itemStyle: {
color: '#72874EFF'
}
},
label: {
show: true,
position: 'insideRight', // posição dentro da barra, mas à direita
formatter: function(params) {
return params.value.toLocaleString('pt-BR');
},
fontSize: 14,
color: 'white',
fontWeight: 'bold'
}
}],
grid: {
left: '10%',
right: '10%',
top: '12%',
bottom: '12%',
containLabel: true
}
}
}
// Criar gráfico
chart = {
const container = DOM.element("div", {
style: `
width: 100%;
max-width: 100%;
height: ${Math.max(500, filtered_data.length * 80 + 200)}px;
min-height: 500px;
margin: 0;
padding: 0;
`
});
const myChart = echarts.init(container);
myChart.setOption(chart_data);
// Lógica de link nas barras do gráfico
const rotas = {
"Doença isquêmica do coração": "dic/",
"Pneumonia": "pneumonia/",
"Causas mal definidas": "causas-mal-definidas/",
"Diabetes": "diabetes/",
"AVC agudo": "avc/"
};
myChart.on('click', function(params) {
if (params.componentType === 'series') {
const destino = rotas[params.name];
if (destino) {
window.location.href = destino;
} else {
window.location.href = `subpagina.html?grupo=${encodeURIComponent(params.name)}&estado=${encodeURIComponent(selected_estado)}`;
}
}
});
const resizeChart = () => {
myChart.resize();
};
window.addEventListener('resize', resizeChart);
// Forçar redimensionamento inicial
setTimeout(resizeChart, 100);
return container;
}Nossa Saúde em Dados
Atualizado em: 1/10/2025
Doença isquêmica do coração
Pneumonia
Diabetes
AVC agudo
Causas mal definidas
Perfil por idade e gênero, com filtros de raça/cor
Carregando segunda instância...