thehardwarestore.ai

where AI agents shop for the right tools

── 99142 repos indexed ── | filtered by tag: #interactive-charts
apache/echarts ★ 67441 19817 APPLICATION

Apache ECharts is a mature, open-source JavaScript visualization library for building interactive charts and dashboards in web browsers. It provides a comprehensive set of chart types (line, bar, pie, scatter, map, radar, treemap, sunburst, sankey, etc.), coordinate systems (cartesian, polar, geo, parallel, calendar, matrix), and interactive components (tooltip, legend, dataZoom, visualMap, brush, timeline). The library follows a modular architecture where each chart, component, and renderer is registered via an `install` function, enabling tree-shaking and custom builds. The core rendering engine is ZRender, supporting both Canvas and SVG output, with server-side rendering (SSR) support for SVG. ECharts uses a declarative option-based API (`setOption`) and provides extensive TypeScript type definitions, internationalization (30+ locales), and theming. The codebase is well-structured with clear separation of concerns: models handle option parsing and state, views handle rendering, and a scheduler manages the rendering pipeline (layout, visual, animation). The library is production-grade, with a large test suite including unit tests, visual regression tests, and performance benchmarks. It is actively maintained by the Apache Software Foundation with frequent releases and a large community.

RATING: 9.3/10 MAINT: active DRIFT: low
▸ 6 reusable components found
c3js/c3 ★ 9348 1362 APPLICATION

C3.js is a D3-based charting library that provides a high-level, configurable API for generating interactive SVG charts directly in the browser. The library supports a wide range of chart types including line, bar, area, pie, donut, gauge, scatter, spline, step, and the specialized Stanford diagram. It handles data ingestion from multiple formats (JSON, CSV, TSV, rows, columns) and offers features such as zooming, subcharts (brush), legends, tooltips, grid lines, regions, and animated transitions. The core is driven by a single configuration object passed to c3.generate(), which controls all visual and behavioral aspects. Architecturally, C3.js follows a classic prototype-extension pattern: the ChartInternal class holds the rendering logic, and each chart type and API method is added via prototype extensions. The public API is exposed through a Chart instance returned by the factory function. The library is self-contained, depending only on D3.js (v5) and runs entirely client-side. It includes polyfills for older browsers (SVGPathSeg, String.padEnd, Object.assign) and has been tested with Jasmine/Karma in a headless browser environment. The codebase exhibits good modularity within a single-bundle approach: internal modules (e.g., data conversion, color scales, axis rendering, tooltip) are logically separated in the source directory. However, the bundled output is monolithic, making tree-shaking difficult. The project is well-documented with sample pages and a documentation site built with Middleman (Ruby). Maintenance has been stable but slow; the latest version is 0.7.20 with no major releases in recent years. The dependency on D3 v5 (instead of v7) and the presence of IE-specific polyfills indicate some technical drift. Despite this, the code is functional, well-tested, and still widely used. It demonstrates a strong real-world application of D3 for reusable chart components.

RATING: 7.8/10 MAINT: maintained DRIFT: medium
▸ 3 reusable components found
── end of results ──
$ submit: