【发布时间】:2014-08-22 14:15:52
【问题描述】:
我需要绘制带有时间刻度的轴并在其上仅显示天数。这是我的代码:
var xScale = d3.time.scale.utc()
.domain([beginning, ending])
.range([margin.left, availableWidth - margin.right]);
var xAxis = d3.svg.axis()
.scale(xScale)
.orient(orient)
.tickFormat(tickFormat)
.ticks(d3.time.days.utc, 1)
.tickSize(tickSize);
但是在很长的时间间隔内重叠不好(因为我显示了每个刻度):
https://pp.vk.me/c620728/v620728099/16ab9/HdJByiakoKA.jpg
我做了一些数学运算并计算出可接受的刻度数:
var xAxis = d3.svg.axis()
...
.ticks(d3.time.days.utc, stepTick) // for example 20 for a year interval
.tickSize(tickSize);
因此轴上的每 20 个刻度将显示一年,看起来很棒!除了月份的联合:
https://pp.vk.me/c620728/v620728099/16aaf/PjM4KJ0ofTM.jpg (31.05/01.06)
月份联合的标签仍然重叠,因为在 d3.time.days 的文档中我们可以看到
如果指定了 step,则将返回每个 step'th 日期,基于月份的日期。
如何防止标签重叠?
【问题讨论】:
标签: javascript d3.js