I have zoom and pan working for the x axis but I\'d like to add panning for the y axis. I tried using d3.behavior.zoom and d3.event.translate[1] to
You can use
zoom.centerto get the code a bit cleaner, like this:
var lastY = 0;
var x = d3.scale.linear()
.domain([0, 800])
.range([0, 800]);
var y = d3.scale.linear()
.domain([0, 800])
.range([0, 800]);
var rectangleSelector = d3.select('svg')
.append('g')
.selectAll('rect')
.data([[0, 0], [50, 50], [100, 100]])
.enter()
.append('rect')
.attr('fill', 'black')
.attr('x', d => x(d[0]))
.attr('y', d => y(d[1]))
.attr('width', d => x(d[0] + 40) - x(d[0]))
.attr('height', d => y(40));
var zoom = d3.behavior.zoom().center([400, 400]).x(x);
zoom.on('zoom', () => {
var translateY = d3.event.translate[1];
zoom.center([400, translateY]);
rectangleSelector.attr('x', d => x(d[0]))
.attr('y', d => y(d[1] + translateY))
.attr('width', d => x(d[0] + 40) - x(d[0]))
.attr('height', d => y(40));
});
d3.select('svg').call(zoom);