我產生用來顯示的一組文件發佈日期的圖表。D3.js獲取直方圖/酒吧列寬
這些日期可以在幾天之間非常大大,月&年。
values = [Mon Jan 01 2001 00:00:00 GMT+0000 (GMT Standard Time), Tue Jan 02 2001 00:00:00 GMT+0000 (GMT Standard Time), ... , Thu Jan 09 2003 00:00:00 GMT+0000 (GMT Standard Time)]
因此,我使用「d3.layout.histogram」將文檔日期分組爲10(或儘可能接近)分檔。
var x = d3.time.scale().domain([firstDate, lastDate]).range([0, width]);
var data = d3.layout.histogram()
.bins(x.ticks(bins))
(values);
var formatDate = d3.time.format("%d/%m/%y");
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickFormat(formatDate);
然後,在一個固定的10px的(A中圖)繪製矩形條寬度如下:
bar.append("rect")
.attr("x", 0)
.attr("width", function(d) {
rtnW = 10;
return rtnW;
})
.attr("height", function(d) { return height - y(d.y); });
如果我嘗試動態地設置的寬度,它是好的,只要蜱跨軸均勻地定位:
.attr("width", (width/(x.ticks(bins).length-1))-1)
但是,如果蜱蟲並不完全適合,那麼你在軸的前&結束,這將引發斷colu得到備用的規模(圖中!)寬度計算。
所以,問題是:
如何計算/獲取,在X軸每個刻度之間的實際寬度(圖B)? (如果我能儘快回到蜱1 & 2的日期,我大概可以做出來了。axis.tickValues可以用這張??幫助)。
非常感謝!
我不知道你想做什麼,但你可以得到軸的使用'.ticks()'函數的蜱。爲了獲得蜱之間屏幕座標的差異,前兩個值,將它們傳遞給您的比例並計算差異。看起來問題可能在於條形的位置,而不是寬度。 –
我認爲拉爾斯的方法是可行的。如果你知道x軸的長度(你會這樣做),並且你知道該軸上的開始和結束日期/時間(你會這樣做(我會假設在幾秒鐘內工作會是最好的)),如果你知道圖上的滴答數(這將是我的狡猾計劃可能需要幫助的點),您將能夠計算間隔。我想你可能需要做一些實驗。 – d3noob
您需要計算間隔的是軸上的兩個相鄰點。 –