D3问题与时间尺度,计算项目的位置

时间:2014-01-30 02:10:28

标签: javascript d3.js data-visualization graph-visualization

我正在使用在x轴上使用时间刻度的条形图。

每个条形代表一个月,所以所有日期都设置为YYYY-MM,当我加载数据时,我用以下方法解析:

var parseDate = d3.time.format("%Y-%m").parse;

问题在于每个月的天数如何不同,有些酒吧比其他酒吧更接近而不是具有相同的保证金,正如您在此屏幕截图中看到的那样:

barchart

您可以在此处找到代码http://tributary.io/inlet/8700564

由于

1 个答案:

答案 0 :(得分:0)

您有两种选择:使用x轴的序数(类别)比例,这将使所有条形图具有相同的宽度,或者根据月份的长度单独设置每个条形图的宽度。

要确定月份的长度,您可以使用d3 time intervals获取下个月开始的日期。然后宽度就是xScale上两个日期位置之间的差异,可能通过填充调整以在条形图之间留出一些空间。

rect.attr("x", function(d){return xScale(d.date) + padding;})
    .attr("width", function(d){
              return xScale( d3.time.month.offset(d.date, 1) )
                   - xScale(d.date)
                   - 2*padding;
        });