我有一个 x 轴,显示我的数据发生的日期。数据是动态的,有时我只有 1 天、2 天、n 天等的数据。
这是我在 x 轴上显示日期的代码:
chart.x = d3.time.scale()
.range([0, chart.w]);
chart.xAxis = d3.svg.axis()
.scale(chart.x)
.orient("bottom")
.ticks(d3.time.day) // --- TODO : this is not showing the current day, for some reason...
.tickFormat(d3.time.format("%b %-d %p"));
如果我的数据分布在 2 天(例如:星期二、星期三),则只会显示第二天(星期三)的勾号,即。当这一天从一个“变化”到另一个时。
我还想显示第一天(星期二)的勾号。
即使只有 1 天的数据,我仍然想显示一个勾号。
谢谢你们,
要扩展域以使刻度开始和结束于刻度线,您可以使用.nice()
方法,正如@meetamit建议的那样——但是“nicing”只有在你调用该方法时才有效after您设置了域,因此您可能没有注意到任何更改。 API 并没有真正明确这一点,尽管由于该方法改变了域,我认为稍后更改域会覆盖先前的效果是有意义的nice()
call.
另外,请务必使用该方法的时间尺度版本 https://github.com/mbostock/d3/wiki/Time-Scales#wiki-nice: .nice(d3.time.day)
使域四舍五入到最近的一天,而不是仅四舍五入到最近的小时。
这是一个小提琴:
http://fiddle.jshell.net/4rGQq/ http://fiddle.jshell.net/4rGQq/
关键代码很简单:
xScale.domain(d3.extent(d))
//d3.extent() returns max and min of array, which become the basic domain
.nice(d3.time.day);
//nice() extends the domain to nearest start/end of a day
比较一下如果注释掉会发生什么.nice()
设置域后调用,即使与另一个.nice()
在秤初始化期间调用。还可以比较如果不指定日期间隔作为 Nice 方法的参数会发生什么情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)