【问题标题】:d3.js - how to change x position of rect on time scale axis?d3.js - 如何在时间刻度轴上更改矩形的 x 位置?
【发布时间】:2012-05-20 21:52:43
【问题描述】:

我正在时间刻度 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 参考,但失败了。

【问题讨论】:

    标签: svg d3.js


    【解决方案1】:

    问题确实在于设置 x 属性,看来问题在于 bar_graph.x() 语句,尝试执行以下操作:

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

    在此处查看完整实现:​​http://jsfiddle.net/qAHC2/4/

    【讨论】:

    • 非常感谢,您的示例看起来很完美。但这对我不起作用,我认为问题在于时间格式不同。我使用默认的 Date() 格式...
    • 在示例中,初始数据集使用数字数组作为日期,但它们确实被转换为默认的 javascript 日期:data[i].dateVal = new Date(data[i].DateParts[0],data[i].DateParts[1],data[i].DateParts[2]); 所以也许这是另一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多