Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript d3-将x刻度从第一个开始日期转换为最后一个结束日期_Javascript_Json_D3.js - Fatal编程技术网

Javascript d3-将x刻度从第一个开始日期转换为最后一个结束日期

Javascript d3-将x刻度从第一个开始日期转换为最后一个结束日期,javascript,json,d3.js,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":"

关于
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
更改为从数据集的第一个
开始日期
到最后一个
结束日期

如果这是不可能的,另一个解决方案是手动设置每个日期。i、 e.添加到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; }));
(不过我现在会尝试一下,看看它是否有效) 编辑:显然它不工作,我得到
类型错误:字符串未定义

我确实记得在
forEach
函数中解析日期以使其可读:
d.scale=parseDate(d.scale)

我在其他数据中添加了一个空的
“scale”:“
,现在可以了

我不清楚你想要实现什么。。。域名应该是什么<代码>[min(startDate),max(endDate)]
[data[0].startDate,data[data.length-1].endDate]
?您需要将字符串解析为日期对象,以使时间刻度生效,请参见示例。是的,我已将字符串解析为日期对象。我希望x轴从所有数据的第一个
开始日期
到最后一个
结束日期
。在我上面的代码中,它使用了
d3.extent
表示
startDate
,这显然是错误的<代码>[min(开始日期),max(结束日期)]
从外观上看似乎是这样,我不清楚你想要实现什么。。。域名应该是什么<代码>[min(startDate),max(endDate)]
[data[0].startDate,data[data.length-1].endDate]
?您需要将字符串解析为日期对象,以使时间刻度生效,请参见示例。是的,我已将字符串解析为日期对象。我希望x轴从所有数据的第一个
开始日期
到最后一个
结束日期
。在我上面的代码中,它使用了
d3.extent
表示
startDate
,这显然是错误的<代码>[min(开始日期),max(结束日期)]从外观上看似乎就是它