我正在嘗試將縮放功能添加到我的條形圖中。我想要實現的是,當用戶將光標拖到某個區域時,您應該可以放大該區域,並且x軸值將更改爲顯示該月的天數。以下示例爲http://bl.ocks.org/godds/ec089a2cf3e06a2cd5fc。我試圖合併相同的縮放和拖動功能。D3在變焦時更改X軸
我似乎在更改我的x軸值時遇到問題,因爲我正在尋找一種方法,以便在選擇特定區域時動態更改x軸。目前,當你放大酒吧所有改變位置,但我的x軸值保持不變(仍然顯示月數,而我想顯示的天數)。
我的X軸代碼:
var xAxis = d3.svg.axis()
.scale(x)
.orient('bottom')
.ticks(d3.time.month)
.tickFormat(d3.time.format('%b %y'))
.tickSize(0)
.tickPadding(8);
我的畫筆工具:
function bListener(){
x.domain(brush.empty() ? x.domain() : brush.extent());
svg.select(".x axis").call(xAxis);
svg.selectAll(".bar").attr("transform", function(d) {
console.log(d.date);
return "translate(" + x(new Date(d.date)) + ",0)";
});
}
完整代碼可以在這裏找到:因爲我覺得我的頭去http://jsfiddle.net/noobiecode/wck4ur9d/32/
任何幫助,將不勝感激隨時爆炸。
你放大到條形圖似乎沒有正常工作。但要更新軸只是在容器元素上執行.call(xAxis),並且將更新 – thatOneGuy
[如何使用d3.js更新座標軸](http://stackoverflow.com/questions/16919280/how-to -update-axis-using-d3-js) – thatOneGuy
@thatOneGuy,我在bListener函數svg.selectAll(「.x axis」)內進行更新,call(xAxis); – user3837019