我在D3.js v4上有一個熱圖,我試圖給它增加縮放和平移功能。縮放只能在x軸上工作,並不會改變y軸。有關縮放部分低於:在D3.js/v4中放大熱圖重繪
var x = d3.scaleTime().range([0, width]).domain([minDate, maxDate]);
var xAxis = d3.axisBottom().scale(x);
var zoom = d3.zoom().scaleExtent([1, 2])
.translateExtent([[80, 20], [width, height]])
.on("zoom", zoomed);
svg.call(zoom);
function zoomed() {
xAxis.scale(d3.event.transform.rescaleX(x));
svg.select(".x.axis").call(xAxis);
update();
}
function update() {
svg.selectAll(".cell")
.attr('clip-path', 'url(#plotAreaClip)')
.attr("x", function (d) { return x(d.timestamp); })
.attr("y", function (d) { return y(d.hour); })
.attr("width", function (d) { return x(d3.timeWeek.offset(d.timestamp, 1)) - x(d.timestamp); })
.attr("height", function (d) { return y(d.hour + 1) - y(d.hour); })
.attr("fill", function (d) { return colorScale(d.value); });
}
當我真正在zoomed()
功能註釋掉update()
,我可以看到,軸/出來就好放大。但是當update()
在函數中時,它只會刪除圖表中的所有矩形。
JS小提琴鏈接是https://jsfiddle.net/7z1f4c5p/(我不知道上傳csv文件到JSFiddle的方法,所以我不得不把整個數據寫到JS部分,對不起,代碼在底部。第97行,變焦將無法正常工作。
小提琴缺少代碼 –