我正在使用在x轴上使用时间刻度的条形图。
每个条形代表一个月,所以所有日期都设置为YYYY-MM,当我加载数据时,我用以下方法解析:
var parseDate = d3.time.format("%Y-%m").parse;
问题在于每个月的天数如何不同,有些酒吧比其他酒吧更接近而不是具有相同的保证金,正如您在此屏幕截图中看到的那样:
您可以在此处找到代码http://tributary.io/inlet/8700564
由于
答案 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;
});