2012-05-12 37 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