ズーム機能を可能にする簡単なチャートを作成しようとしています。これまでに見つけた例では、軸と目盛りを手動で生成しています:http: //bl.ocks.org/1182434
しかし、私が使用したのは組み込みの軸オブジェクトであり、これを機能させるためにスケールを変換する方法がわかりません-何かアイデアはありますか?
var xScale = d3.scale.linear().
domain([0, 80]). // your data minimum and maximum
range([0, width]); // the pixels to map to, e.g., the width of the diagram.
var yScale = d3.scale.linear().
domain([100, 0]).
range([0, height]);
var xAxis = d3.svg.axis().orient("bottom").scale(xScale).ticks(10, d3.format(",d")),
yAxis = d3.svg.axis().orient("left").scale(yScale);
var chart = d3.select("#chart").append("svg")
.attr("class", "chart")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.attr("pointer-events", "all")
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")")
.call(d3.behavior.zoom().on("zoom", redraw))
.append("g")
chart.append('svg:rect')
.attr('width', width)
.attr('height', height)
.attr('fill', 'white');
// x-axis
var xaxis = chart.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
// y-axis
var yaxis = chart.append("g")
.attr("class", "y axis")
.call(yAxis);
// omitted code to draw the path, it's just a path object that uses a line and passes data to it
function redraw()
{
console.log("here", d3.event.translate, d3.event.scale);
path.attr("transform", "translate(" + d3.event.translate + ")" + " scale(" + d3.event.scale + ")");
// d3.event.transform(xScale, yScale);
// HERE is where I need to figure out how to scale the x and y axes!
xAxis.scale(xScale);
yAxis.scale(yScale);
xaxis.call(xAxis);
yaxis.call(yAxis);
}