d3 - 从第一个开始日期到最后结束日期转换x比例

时间:2015-08-04 05:47:10

标签: javascript json d3.js

我对d3.time.scale()有一个简单的问题。我有以下代码:

var xScale = d3.time.scale()
    .range([0, w - margin.left - margin.right])
    .domain(d3.extent(data, function(d) { return d.startDate; })); // this is wrong

和示例.json数据:

{
    "name":"Mark",
    "startDate":"4-Oct-1992", // make this first date in scale
    "endDate":"6-Oct-1992",

},
{
    "name":"Bill",
    "startDate":"17-Dec-1992",
    "endDate":"20-Dec-1992",
}
{
    "name":"Steve",
    "startDate":"17-Jan-1993",
    "endDate":"20-Jan-1993" // make this last date in scale
}

基本上希望将.domain更改为从数据集的第一个startDate转到最后一个endDate

如果无法做到这一点,另一种解决方案是手动设置每个日期。即要添加到json的ff代码:

{
    "name":"Mark",
    "startDate":"4-Oct-1992", 
    "endDate":"6-Oct-1992",
    "scale":"1-Jan-1992" // first date      
},
{
    "name":"Bill",
    "startDate":"17-Dec-1992",
    "endDate":"20-Dec-1992",
}
{
    "name":"Steve",
    "startDate":"17-Jan-1993",
    "endDate":"20-Jan-1993" 
    "scale":"31-Dec-1993" // last date
}

.domain(d3.extent(data, function(d) { return d.scale; }));

(我实际上会尝试一下,看看它是否有效) 编辑:显然它不起作用,我得到TypeError: string is undefined

我确实记得在forEach函数中解析日期以使其可读:d.scale = parseDate(d.scale);但为什么它仍然不起作用?

我为其他所有数据添加了一个空的"scale":"",现在可以了!

0 个答案:

没有答案