Recharts, Chart.js, Nivo, Victory, visx e ECharts comparadas construindo o mesmo gráfico de barras em cada uma, com código para copiar e tamanhos de bundle medidos. Escolha a biblioteca de gráficos React certa.
Para a maioria dos dashboards em React, Recharts é o começo mais rápido e Chart.js entrega um bundle menor, desenhado em canvas. Escolha visx para designs totalmente personalizados com o menor tamanho, Nivo para padrões caprichados, Victory se você também mira React Native, e ECharts para gráficos muito grandes ou complexos. Construímos o mesmo gráfico em cada uma e medimos.
Versão curta
Todas as bibliotecas abaixo desenham o mesmo gráfico de barras de seis meses a partir dos mesmos dados. Empacotamos cada uma separadamente e medimos o resultado, então a tabela de tamanhos compara coisas equivalentes. O exemplo de Recharts também roda ao vivo nesta página.
Depende da tarefa. Recharts serve para dashboards típicos, Chart.js para muitos dados com um bundle pequeno, visx para designs sob medida e ECharts para gráficos complexos e cheios de dados. A tabela de tamanhos aqui mostra o custo de cada uma.
Recharts é mais natural no React porque os gráficos são componentes e renderizam como SVG que você pode estilizar. Chart.js desenha em canvas, lida bem com muitos pontos e teve menos da metade do tamanho no nosso teste.
Sim. As seis são open source: Recharts, Chart.js, Nivo, Victory e visx sob a licença MIT, e ECharts sob Apache 2.0.
Elas desenham no navegador e usam effects ou refs, então o componente do gráfico precisa de "use client". Os dados ainda podem ser buscados em um Server Component e passados como props.
Medido: um gráfico de barras, minificado e com gzip (React não incluído)
Como elas diferem
Seis meses de visitas a um site. Cada biblioteca abaixo desenha o mesmo gráfico de barras com eles.
Montado com componentes que se leem como o próprio gráfico: um eixo x, um eixo y, um tooltip, barras. ResponsiveContainer faz o gráfico ocupar a largura do pai. O gráfico ao vivo ao lado é este código.
Chart.js permite tree-shaking, então você registra só as peças que o gráfico usa. Ele desenha em um canvas, que continua rápido com milhares de pontos mas precisa de um texto acessível próprio.
Um componente com muitas props e padrões bonitos. ResponsiveBar precisa de um pai com altura definida.
Componentes SVG combináveis. A mesma API existe para React Native (victory-native), o que ajuda quando a web e o app compartilham código de gráficos.
Menos uma biblioteca de gráficos e mais um conjunto de blocos: você cria as escalas e desenha as barras. Mais código, controle total e o menor bundle do nosso teste.
Tudo fica em um único objeto de opções. Importar echarts-for-react traz o ECharts inteiro, que é o maior bundle aqui.
Importe de echarts/core e registre só o gráfico, os componentes e o renderizador que você usa. No nosso teste isso reduziu o bundle mais ou menos pela metade.
Precisa de um lugar para colocar os gráficos? Comece pelos nossos
Gráfico de barras de visitas mensais: jan 1,200, fev 1,650, mar 1,420, abr 2,100, mai 2,480, jun 2,310
jan
mar
abr
mai
jun
Comece grátis · Sem cartão de crédito