繁体   English   中英

如何在d3中为日期时间刻度设置适当的域

[英]how to set proper domain for date time scale in d3

我正在尝试使用以下数据构建散点图:

[
{"frequency": 10, "date": "2014-01-01"},
{"frequency": 20, "date": "2014-01-02"},
{"frequency": 30, "date": "2014-01-03"}
]

在x轴上绘制“日期”,在y轴上绘制频率。 我在x轴上使用“ d3.time.scale”。 问题是比例尺和刻度线从原点开始在x轴上开始,因此我得到了从y轴开始的图。

为了解决这个问题,我尝试在x轴域中添加前一天和后一天,即“ 2013-12-31”和“ 2014-01-04”(使用“ d3.time.day.offset”功能) )。

如果给定的时间序列以天为间隔,则上面的代码有效。 如果我的数据以月为间隔,如下所示:

 [
{"frequency": 10, "date": "2014-01-01"},
{"frequency": 20, "date": "2014-02-02"},
{"frequency": 30, "date": "2014-03-03"}
]

上面的代码不起作用。 我必须使用“ d3.time.month.offset”功能。

有没有一种方法可以知道给定时间序列的间隔时间,并使用适当的偏移量。 (即“ d3.time.month.offset”,“ d3.time.year.offset”,“ d3.time.day.offset”等)。

谢谢

我遇到类似的问题,但我认为这可能有用: http : //jsfiddle.net/robdodson/KWRxW/

var x = d3.time.scale() .domain([new Date(data[0].date), d3.time.day.offset(new Date(data[data.length - 1].date), 1)]) .rangeRound([0, width - margin.left - margin.right]);

另外,Mike在此处列举了日期/时间偏移量: https : //github.com/mbostock/d3/wiki/Time-Intervals

:)

这是一个跨浏览器解决方案:

var timeFormat = d3.time.format('%Y-%m-%dT%H:%M:%S');

当用于设置比例尺域时,它将返回与浏览器一致的Date对象:

.domain([timeFormat.parse('2014-03-08T12:00:00'), timeFormat.parse('2014-03-10T00:00:00')])

有关更多信息,请参见http://bl.ocks.org/jebeck/9671241

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM