Description
Want to learn more? See the wiki.
For examples, see the gallery and mbostock’s bl.ocks.
d3 alternatives and similar libraries
Based on the "Data Visualization" category.
Alternatively, view d3 alternatives based on common mentions on social networks and blogs.
-
echarts
Apache ECharts is a powerful, interactive charting and data visualization library for browser -
fabric.js
Javascript Canvas Library, SVG-to-Canvas (& canvas-to-SVG) Parser -
BabylonJS
Babylon.js is a powerful, beautiful, simple, and open game and rendering engine packed into a friendly JavaScript framework. -
p5.js
p5.js is a client-side JS platform that empowers artists, designers, students, and anyone to learn to code and express themselves creatively on the web. It is based on the core principles of Processing. http://twitter.com/p5xjs — -
#<Sawyer::Resource:0x00007f1b609038f0>
Open-source JavaScript charting library behind Plotly and Dash -
paper.js
The Swiss Army Knife of Vector Graphics Scripting – Scriptographer ported to JavaScript and the browser, using HTML5 Canvas. Created by @lehni & @puckey -
Frappe Charts
Simple, responsive, modern SVG Charts with zero dependencies -
sigma.js
A JavaScript library aimed at visualizing graphs of thousands of nodes and edges -
GoJS, a JavaScript Library for HTML Diagrams
JavaScript diagramming library for interactive flowcharts, org charts, design tools, planning tools, visual languages. -
Cytoscape.js
Graph theory (network) library for visualisation and analysis -
dc.js
Multi-Dimensional charting built to work natively with crossfilter rendered with d3.js -
mxGraph
Diagramming library that enables interactive graph and charting applications to be quickly created that run natively in any major browser that is supported by its vendor. -
metrics-graphics
A library optimized for concise and principled data graphics and layouts. -
jointjs
A proven SVG-based JavaScript diagramming library powering exceptional UIs -
processing.js
Processing.js makes your data visualizations work using web standards and without any plug-ins -
react-simple-maps
Beautiful React SVG maps with d3-geo and topojson using a declarative api. -
d3plus
A javascript library that extends D3.js to enable fast and beautiful visualizations. -
jquery.sparkline
A plugin for the jQuery javascript library to generate small sparkline charts directly in the browser
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of d3 or a related project?
Popular Comparisons
README
D3: Data-Driven Documents
D3 (or D3.js) is a JavaScript library for visualizing data using web standards. D3 helps you bring data to life using SVG, Canvas and HTML. D3 combines powerful visualization and interaction techniques with a data-driven approach to DOM manipulation, giving you the full capabilities of modern browsers and the freedom to design the right visual interface for your data.
Resources
Installing
If you use npm, npm install d3
. You can also download the latest release on GitHub. For vanilla HTML in modern browsers, import D3 from Skypack:
<script type="module">
import * as d3 from "https://cdn.skypack.dev/[email protected]";
const div = d3.selectAll("div");
</script>
For legacy environments, you can load D3’s UMD bundle from an npm-based CDN such as jsDelivr; a d3
global is exported:
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
<script>
const div = d3.selectAll("div");
</script>
You can also use the standalone D3 microlibraries. For example, d3-selection:
<script type="module">
import {selectAll} from "https://cdn.skypack.dev/[email protected]";
const div = selectAll("div");
</script>
D3 is written using ES2015 modules. Create a custom bundle using Rollup, Webpack, or your preferred bundler. To import D3 into an ES2015 application, either import specific symbols from specific D3 modules:
import {scaleLinear} from "d3-scale";
Or import everything into a namespace (here, d3
):
import * as d3 from "d3";
Or using dynamic import:
const d3 = await import("d3");
You can also import individual modules and combine them into a d3
object using Object.assign:
const d3 = await Promise.all([
import("d3-format"),
import("d3-geo"),
import("d3-geo-projection")
]).then(d3 => Object.assign({}, ...d3));