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(结束日期)]从外观上看似乎就是它