Introdução
Neste projeto, você aprenderá como criar um gráfico de visualização de dados usando a biblioteca ECharts. O projeto visa ajudar Lucy, uma usuária da plataforma de aprendizado online, a visualizar melhor seu tempo diário de estudo.
👀 Pré-visualização

🎯 Tarefas
Neste projeto, você aprenderá:
- Como obter dados de um arquivo JSON e processá-los para extrair as informações necessárias.
- Como usar a biblioteca ECharts para criar um gráfico de barras que exibe as estatísticas de duração de estudo semanal e mensal.
- Como implementar interatividade para permitir que o usuário alterne entre as visualizações semanal e mensal.
- Como redimensionar o gráfico dinamicamente quando a janela é redimensionada.
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Obter dados de um arquivo JSON e manipulá-los para visualização.
- Configurar e personalizar um gráfico de barras ECharts para exibir as estatísticas de duração do estudo.
- Adicionar interatividade ao gráfico e lidar com as interações do usuário.
- Garantir que o gráfico permaneça responsivo e se adapte ao redimensionamento da janela.
Configurar a Estrutura do Projeto
Nesta etapa, você configurará os arquivos e a estrutura do projeto. Siga as etapas abaixo para concluir esta etapa:
Abra a pasta do projeto. A estrutura do diretório é a seguinte:
├── css
│ └── style.css
├── data.json
├── index.html
└── js
├── axios.min.js
└── echarts.min.js
Nesta estrutura:
index.htmlé a página principal.js/echarts.min.jsé o arquivo ECharts.js/axios.min.jsé o arquivo axios.css/style.cssé o arquivo de estilo.data.jsoné o arquivo de dados para a duração do estudo.
Clique no botão Go Live no canto inferior direito do WebIDE para executar o projeto.
Em seguida, abra "Web 8080" no topo da VM e atualize-o manualmente para ver a página.
Obtendo os Dados
Nesta etapa, você aprenderá como obter os dados do arquivo data.json e armazená-los nas estruturas de dados necessárias.
- Abra o arquivo
index.htmlem seu editor de código. - Localize a seção
// TODOno código JavaScript. - Crie dois objetos para armazenar os dados semanais e mensais:
// TODO
let weekData = {
x: [],
y: []
};
let monthData = {
x: [],
y: []
};
- Implemente a função
mySetOption()para atualizar as opções do gráfico com base nos dados passados para ela.
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
myChart.setOption(option);
}
- Use o método
axios.get()para obter os dados do arquivodata.json. A resposta da chamada da API conterá os dados na propriedaderes.data.data.
axios.get("./data.json").then((res) => {
const data = res.data.data;
// Process the data here
});
- Dentro da função de callback do método
then(), itere sobre o objetodatae processe os dados de duração do estudo para cada dia. Calcule a duração total do estudo para cada semana e mês e armazene os resultados nos objetosweekDataemonthData, respectivamente.
for (const key in data) {
let weekCount = (monthCount = 0),
weekNum = 1;
for (let i = 0; i < data[key].length; i++) {
weekCount += data[key][i];
monthCount += data[key][i];
if (
(i + 1) % 7 === 0 ||
(data[key].length - i <= 7 && i === data[key].length - 1)
) {
weekData.x.push(`Week ${weekNum++} (${key})`);
weekData.y.push(weekCount);
weekCount = 0;
}
}
monthData.x.push(key);
monthData.y.push(monthCount);
}
- Após processar os dados, chame a função
mySetOption()e passe o objetoweekDatapara exibir as estatísticas semanais por padrão.
mySetOption(weekData);
- O efeito do código após esta etapa de processamento é o seguinte:
// TODO
let weekData = {
x: [],
y: []
},
monthData = {
x: [],
y: []
};
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
// reset
myChart.setOption(option);
}
axios.get("./data.json").then((res) => {
const data = res.data.data;
for (const key in data) {
let weekCount = (monthCount = 0),
weekNum = 1;
for (let i = 0; i < data[key].length; i++) {
weekCount += data[key][i];
monthCount += data[key][i];
if (
(i + 1) % 7 === 0 ||
(data[key].length - i <= 7 && i === data[key].length - 1)
) {
weekData.x.push(`Week ${weekNum++} (${key})`);
weekData.y.push(weekCount);
weekCount = 0;
}
}
monthData.x.push(key);
monthData.y.push(monthCount);
}
mySetOption(weekData);
});
Exibindo o Gráfico
Nesta etapa, você aprenderá como alternar a exibição de gráficos usando a biblioteca ECharts.
- Abra o arquivo
index.htmlem seu editor de código. - Localize a seção
mySetOptionno código JavaScript. - Adicione ouvintes de eventos para as abas (semanal e mensal) após a função
mySetOptionpara atualizar o gráfico quando o usuário clicar nelas.
function mySetOption(data) {
option.xAxis.data = data.x;
option.series[0].data = data.y;
// reset
myChart.setOption(option);
}
document.querySelector(".tabs").addEventListener("click", function (e) {
if (e.target.id === "week") {
mySetOption(weekData);
} else if (e.target.id === "month") {
mySetOption(monthData);
}
});
Com estas etapas, você concluiu o projeto. O gráfico agora exibirá as estatísticas de duração do estudo semanal e mensal com base nos dados obtidos do arquivo data.json. O efeito final da página é o seguinte:

Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



