Documentación del artículo de Monterail: las 15 librerías JS de visualización de datos comparadas por renderizado (SVG / Canvas / WebGL), encaje con framework y licencia. La idea central: el modelo de renderizado pone el techo — SVG cómodo hasta ~10 000 elementos, Canvas maneja más, WebGL para datasets gigantes y tiempo real. Elegir mal = reescribir el dashboard.
| Librería | Rendering | Licencia | Mejor ajuste |
|---|---|---|---|
| D3.js | SVG (+Canvas) | ISC (open) | El gráfico es el producto |
| Recharts | SVG | MIT | Dashboards en React |
| Victory | SVG | MIT | Web + React Native |
| Chartkick | Delegado | MIT | Una línea, stacks mixtos |
| Flexmonster | Pivot + charts | Comercial | Pivotes enterprise |
| WebDataRocks | Pivot + charts | Free | Pivotes pequeños |
| ApexCharts | SVG | MIT | Dashboards pulidos rápido |
| Chart.js | Canvas | MIT | El default estándar |
| Apache ECharts | Canvas/SVG/WebGL | Apache 2.0 | Datasets gigantes, enterprise |
| Nivo | Canvas/SVG/HTML | MIT | React + SSR |
| amCharts | Canvas (v5) | Free+backlink / $90–180 | Pulido + soporte |
| CanvasJS | Canvas | Comercial | Rendimiento bruto |
| Highcharts | SVG + boost | Comercial (free edu) | Enterprise/reguladas |
| ZoomCharts | Canvas | Comercial | Touch-first |
| Vega / Vega-Lite | Canvas o SVG | BSD-3 | Declarativa por spec |
Stars 112k · SVG · Open source (ISC) · Mantenido por Observable. "The JavaScript library for bespoke data visualization". Curva alta, máxima flexibilidad. En React: módulos no-DOM (d3-scale, d3-array) en JSX; módulos DOM (d3-selection) con ref + useEffect.
// script minimalista (d3-scale — seleccionar escala)
import { scaleLinear } from 'd3-scale';
const x = scaleLinear().domain([0, 100]).range([0, 500]);
console.log(x(50)); // 250
Stars 26k · SVG · MIT · Encima de D3 con componentes nativos de React. Leyendas, tooltips y labels integrados. TypeScript sólido. >470 issues abiertos.
// npm i recharts
import { BarChart, Bar } from 'recharts';
<BarChart width={400} height={200} data={data}>
<Bar dataKey="ventas" fill="#5ad1e6" />
</BarChart>
Stars 11.2k · SVG · MIT · Componentes modulares para React y React Native (Nearform). ARIA fuerte out-of-the-box. API consistente web/móvil.
// npm i victory
import { VictoryBar } from 'victory';
<VictoryBar data={[{x:1,y:2},{x:2,y:4}]} />
Stars 66.6k · Canvas · MIT · La más descargada (millones/semana). 8 tipos core (~16 con extensiones). v4+: tree-shaking, mejor TypeScript. Friendly para principiantes.
// npm i chart.js
import Chart from 'chart.js/auto';
new Chart(document.getElementById('g'), {
type: 'bar',
data: { labels: ['A','B'], datasets: [{ data: [10, 20] }] },
});
Stars 64.7k · Canvas/SVG/WebGL (GL) · Apache 2.0 · Antes Baidu, ahora Apache. >20 tipos, progressive rendering, TypedArray; documenta 10M puntos en real-time. v6 actual.
// npm i echarts
import * as echarts from 'echarts';
const chart = echarts.init(document.getElementById('g'));
chart.setOption({ xAxis: {}, yAxis: {}, series: [{ type: 'bar', data: [5,20] }] });
| Librería | Rendering | Stars | Detalle |
|---|---|---|---|
| ApexCharts | SVG · MIT | 14.9k | Zoom/pan/scroll/anotaciones, >12 tipos, mixed charts. Techo SVG ~miles de puntos. Dashboards atractivos rápido. |
| Nivo | Canvas/SVG/HTML · MIT | 13.8k | React sobre D3, SSR con react-spring, playground en nivo.rocks. Defaults fuertes. |
| Chartkick | Delegado · MIT | 1.2k | "One line of JavaScript" sobre Chart.js/Google/Highcharts. Multi-lenguaje (Vue, React, Python, Ruby…). |
| Librería | Rendering | Licencia | Detalle |
|---|---|---|---|
| Flexmonster | Pivot+charts | $0 trial → $799+ | Hasta 1GB/1M registros; JSON, CSV, SQL, MongoDB, ES, MSAS. Pivotes enterprise. |
| WebDataRocks | Pivot+charts | Free | Del equipo de Flexmonster; 1MB, solo CSV/JSON. Pequeños y prototipos. |
| amCharts | Canvas (v5) | Free+backlink / $90–180 | Pulido visual (Apple, Amazon, NASA). ~400KB core, TS completo. Mapas, Sankey, treemap. |
| CanvasJS | Canvas | Comercial | "10x más rápido"; 100k+ puntos. >30 tipos. Faltan network/sparklines/gauges. |
| Highcharts | SVG + boost | Comercial (free edu) | 80 de las top 100 empresas. Stock, maps, Gantt. boost = millones de puntos. ~76% TS. |
| ZoomCharts | Canvas | Comercial | Multi-touch (Time/Net/Geo/Pie/Face). Exploración touch-first. |
Stars 11.7k · Canvas o SVG · BSD-3 · UW Interactive Data Lab. Spec JSON declarativa: describes QUÉ visualizar y Vega resuelve CÓMO. Vega-Lite es más conciso; ambos compilan al mismo engine. Python vía Altair.
// Vega-Lite spec (declarativo)
{ "mark": "bar",
"data": { "values": [{a:"A",b:10},{a:"B",b:20}] },
"encoding": { "x": {"field":"a"}, "y": {"field":"b"} } }
El token 🟠 recorre la decisión en orden. Clic en el gráfico reinicia.
| Decisión | Opción recomendada |
|---|---|
| Charts estándar | Chart.js |
| Escala (millones de puntos) | Apache ECharts |
| React | Recharts o Nivo |
| El gráfico es el producto | D3.js |
| React Native cross-platform | Victory |
| Enterprise con soporte | Highcharts / amCharts |
| Declarativa / análisis | Vega / Vega-Lite |
C:\Users\TUF\Documents\librerías\local\ antes de descargar.
Fuente: https://www.monterail.com/blog/javascript-libraries-data-visualization.
Se enlaza con el catálogo de 66: D3.js, Chart.js y Highcharts están en ambos.