echarts = require("echarts@5")
// dados
dic_genero_idade = FileAttachment("../fontes/avc_genero_idade.json").json();
dados_genero = dic_genero_idade.filter(d => d.idade >= 0 && d.idade <= 100);
chart_dic_genero_idade = {
// elemento inicia invisível (sem piscada)
const el = DOM.element('div', {
className: 'chart-holder chart-pending',
style: 'width:100%; height:420px; min-height:420px;'
});
function buildOnce() {
if (el._built) return;
el._built = true;
const chart = echarts.init(el);
const idades = dados_genero.map(d => d.idade);
const generos = Object.keys(dados_genero[0]).filter(k => k !== 'idade');
const generosParaMarcar = ['Fem', 'Masc'];
// paleta opcional por série (use as suas cores se preferir)
const coresPorGenero = { Masc: '#FF8C00', Fem: '#008080' };
const option = {
title: { text: 'Mortes por Gênero e Idade (0 a 100 anos)', left: 'center', top: 10 },
tooltip: { trigger: 'axis' },
legend: { data: generos, bottom: 10 },
grid: { top: 80, left: '3%', right: '4%', bottom: '15%', containLabel: true },
xAxis: { type: 'category', boundaryGap: false, data: idades, name: 'Idade' },
yAxis: { type: 'value', name: 'Quantidade' },
animationDuration: 2000,
animationEasing: 'cubicOut',
series: generos.map(g => ({
name: g,
type: 'line',
data: dados_genero.map(d => d[g] ?? 0),
itemStyle: { color: coresPorGenero[g] },
lineStyle: { color: coresPorGenero[g] }
}))
};
chart.setOption(option);
// adiciona markPoints após a animação das linhas
setTimeout(() => {
const seriesMP = generos.map((g) => {
const dados = dados_genero.map(d => d[g] ?? 0);
let markPoint = {};
if (generosParaMarcar.includes(g)) {
const maxv = Math.max(...dados);
const i = dados.indexOf(maxv);
const idadePico = idades[i];
const cor = coresPorGenero[g] || '#666';
markPoint = {
// >>> animação do markPoint restaurada <<<
animation: true,
animationDuration: 800,
animationEasing: 'cubicOut',
data: [{
// você pode trocar por type: 'max' se preferir
coord: [i, maxv],
symbol: 'circle', // 'pin' para balão em gota
symbolSize: 12, // <<< diminua/aumente o "balão"
itemStyle: {
color: cor,
borderColor: '#fff',
borderWidth: 2
},
label: {
show: true,
position: 'top',
offset: [0, -6],
// >>> caixa no rótulo <<<
backgroundColor: 'rgba(255,255,255,0.95)',
borderColor: cor,
borderWidth: 1,
borderRadius: 6,
padding: [6, 8],
color: '#333',
fontSize: 12,
fontWeight: 'bold',
lineHeight: 16,
formatter: `Pico ${g}: ${idadePico} anos`
}
}]
};
}
return { name: g, type: 'line', data: dados, markPoint };
});
chart.setOption({ series: seriesMP });
}, 2100);
// garante tamanho correto e revela
chart.resize();
new ResizeObserver(() => chart.resize()).observe(el);
window.addEventListener('resize', () => chart.resize());
el.classList.remove('chart-pending');
el.classList.add('chart-ready');
invalidation.then(() => chart.dispose());
}
// inicializa já, se visível; senão, espera a aba abrir
requestAnimationFrame(() => {
const pane = el.closest('.tab-pane');
if (!pane || pane.classList.contains('active') || pane.style.display !== 'none') {
requestAnimationFrame(buildOnce);
} else {
const onShow = ev => {
const target = ev.target && ev.target.getAttribute('data-bs-target');
if (target === '#' + pane.id) {
requestAnimationFrame(buildOnce);
document.removeEventListener('shown.bs.tab', onShow);
}
};
document.addEventListener('shown.bs.tab', onShow);
}
});
return el;
}Acidente vascular cerebral
Destaques: Gênero
O padrão de proporção enmtre homens e mulheres é bem semelhante à maioria dos grupos de doenças. Para causas mal definidas, percebe-se um número de mortalidade gramde entre 0 e 2 anos que somam 636 mortes. Homens representam 44.5% do total de mortes.
Destaques: Raça/Cor
Fator que chama a atenção é que, na fase adulta pessoas pardas e brancas têm maior probabilidade de morrer na mesma idade (aos 75 anos).
Pessoas pretas mantém maior probabilidade de morte aos 72 anos, 3 antes que pessoas brancas.
Lista de causas por diabetes
| Código | Descrição |
|---|---|
| I61 | Hemorragia intracerebral |
| I63.0 | Infarto cerebral devido a trombose de artérias pré-cerebrais |
| I63.1 | Infarto cerebral devido a embolia de artérias pré-cerebrais |
| I63.2 | Infarto cerebral devido a oclusão ou estenose não especificada de artérias |
| pré-cerebrais | |
| I63.3 | Infarto cerebral devido a trombose de artérias cerebrais |
| I63.4 | Infarto cerebral devido a embolia de artérias cerebrais |
| I63.5 | Infarto cerebral devido a oclusão ou estenose não especificada de artérias |
| cerebrais | |
| I63.8 | Outros infartos cerebrais especificados |
| I63.9 | Infarto cerebral, não especificado |
| I64 | Acidente vascular cerebral, não especificado como hemorrágico ou isquêmico |
| I65 | Oclusão e estenose de artérias pré-cerebrais, não resultando em infarto |
| I66 | Oclusão e estenose de artérias cerebrais, não resultando em infarto |