2012-05-12 38 views
0

我正在繪製時間尺度x軸上的條形圖。 例如,d3.js - 如何在時間軸上改變矩形的x位置?

var x = d3.time.scale() 
    .domain([minDate, maxDate]) 
    .range([0, width]); 

chart.selectAll(".bar") 
    .data(data) 
    .enter().append("rect") 
    .attr("x", bar_graph.x()) 
    .attr("y", d.value) 
    .attr("width", 10); 

離開角矩形的開始在指定的X點,但我想在X點分配到矩形的中心

由於是時間尺度,簡單的減法運算x-5(假設寬度爲10px)不起作用。我嘗試了invert(),也檢查了svg引用,但失敗了。

回答

0

的問題確實是在設置x屬性,它出現的問題在於bar_graph.x()語句,嘗試做這樣的事情:

.attr("x", function(d) {return x(d.dateVal)-barwidth/2;}) 

看到一個全面實施的位置:http://jsfiddle.net/qAHC2/4/

+0

非常感謝,你的例子看起來很完美。但它不適用於我,我認爲問題是不同的時間格式。我使用默認的Date()格式... – clerksx

+0

在該示例中,初始數據集使用數字數組作爲日期,但它們會轉換爲默認的javascript日期:'data [i] .dateVal = new Date (data [i] .DateParts [0],data [i] .DateParts [1],data [i] .DateParts [2]);'或許這是另一個問題 – Josh