Skip to content

Repository files navigation

D3-Node

Build StatusCodecovnpmnpm

Server-side D3 with ease

Requires Node 6+

maps and charts with d3-node

see examples >

js-standard-style

Why?

Basic usage:

NPM

Create a SVG

constD3Node=require('d3-node')constd3n=newD3Node()// initializes D3 with container elementd3n.createSVG(10,20).append('g')// create SVG w/ 'g' tag and width/heightd3n.svgString()// output: <svg width=10 height=20 xmlns="http://www.w3.org/2000/svg"><g></g></svg>

Advanced usage

Setting container & insertion point via selector

constoptions={selector: '#chart',container: '<div id="container"><div id="chart"></div></div>'}constd3n=newD3Node(options)// initializes D3 with container elementconstd3=d3n.d3d3.select(d3n.document.querySelector('#chart')).append('span')// insert span tag into #chartd3n.html()// output: <html><body><div id="container"><div id="chart"><span></span></div></div></body></html>d3n.chartHTML()// output: <div id="chart"><span></span></div>

Inline SVG styles

constd3n=newD3Node({styles:'.test {fill:#000;}'})d3n.createSVG().append('g')d3n.svgString()

Output

<svgxmlns="http://www.w3.org/2000/svg"><defs><styletype="text/css"><![CDATA[ .test{fill:#000;} ]]></style></defs><g></g><svg>

Create a canvas (for generating a png)

constcanvasModule=require('canvas');constd3n=newD3Node({ canvasModule });// pass it node-canvasconstcanvas=d3n.createCanvas(960,500);constcontext=canvas.getContext('2d');// draw on your canvas, then output canvas to pngcanvas.pngStream().pipe(fs.createWriteStream('output.png'));

Run Tests:

$ npm test

TODOs:

  • Add more examples: (remote data, world map)
  • Create Gulp task
  • Add option to inject css/js into html output

About

Server-side D3 for static chart/map generation ✨📊

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages