What is it?
An SVG projection means moving elements by adjusting the containing element's transform,
rather than updating each item's coordianates as the space is scrolled and panned.
In practice, for many visualisations this is orders of magnitude faster because much
fewer DOM changes are required for common use cases such as scrolling.
For d3 projects.
const svgProjection = require('svg-projections')
let x = d3.scales.linear()
let y = d3.scales.time()
let area = d3.select('#something')
let projection = svgProjection({x, y}, d3.select('#something'), {needsStroke: false, preserveAspect:false})
area.selectAll('.dataPoint')
.data(myData)
.enter()
.append('path')
.attr('x1', d => projection.x(d.value1) )
.attr('x2', d => projection.x(d.value2) )
.attr('y1', d => projection.y(d.time1) )
.attr('y2', d => projection.y(d.time2) )
projection.updateSpace()