san*_*neo 3 javascript brush d3.js
使用brush.extent([val1,val2])刷涂时遇到问题
关于文档:https://github.com/mbostock/d3/wiki/SVG-Controls当我设置brush.extent([val1,val2])时,如下所示:
var xScale = d3.scale.linear()
.domain(data)
.range([0, 500]);
var brush = d3.svg.brush()
.x(xScale)
.on('brushstart', function() {
this.brushStart();
})
.on('brushend', function() {
this.brushEnd();
})
.extent([100, 300]);
Run Code Online (Sandbox Code Playgroud)
它将在xAxis上显示从100到200的拉丝区域(刷子可见并且在右侧位置).
不幸的是,当我使用d3.time.scale()时,它根本不起作用:
var xScale = d3.time.scale()
.domain(data)
.range([0, 500]);
var brush = d3.svg.brush()
.x(xScale)
.on('brushstart', function() {
this.brushStart();
})
.on('brushend', function() {
this.brushEnd();
})
.extent([100, 300]);
// or
// .extent(['2013-08-01T00:00:00Z', '2013-08-10T23:59:59Z']);
// or
// .extent(['2013-08-01 00:00:00', '2013-08-10 23:59:59']);
// or even
// .extent([new Date(2013, 8, 1, 00, 00, 00), new Date(2013, 8, 10, 23, 59, 59)]);
Run Code Online (Sandbox Code Playgroud)
它不显示拉丝区域.
当我使用d3.time.scale()时如何设置刷区?
当然,数据包含可以适合拉丝的日期范围,甚至是边距.
马里乌什
san*_*neo 11
我发现了问题和解决方案.
我正在使用功能:
var parseDate = d3.time.format('%Y-%m-%d %H:%M:%S').parse;
Run Code Online (Sandbox Code Playgroud)
处理所有数据值,原始格式为yyyy-mm-dd hh:mm:ss
设置brush.extent([val1,val2])时我需要使用相同的parseDate()函数:
brush.extent([parseDate(val1), parseDate[val2]]);
Run Code Online (Sandbox Code Playgroud)
马里乌什