简体   繁体   English

如何在使用时间刻度的情况下在d3 js中设置画笔范围?

[英]How to set up brush extent in d3 js while using time scale?

I have a problem with brushing using brush.extent([val1, val2]) 使用brush.extent([val1,val2])刷涂时遇到问题

Regarding documentation: https://github.com/mbostock/d3/wiki/SVG-Controls when I set up brush.extent([val1, val2]) like this: 关于文档: 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]);

It will display brushed area from 100 to 200 on xAxis (brush is visible and on right position). 它将在xAxis上显示从100到200的拉丝区域(刷子可见并且在右侧位置)。

Unfortunately when I'm using d3.time.scale() it doesn't work at all: 不幸的是,当我使用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)]);

It does not display brushed area. 它不显示拉丝区域。

How to set brushed area when I'm using d3.time.scale()? 当我使用d3.time.scale()时如何设置刷区?

Of course data contain date ranges which can fit brushed are even with margins. 当然,数据包含可以适合拉丝的日期范围,甚至是边距。

Mariusz 马里乌什

I found the problem and solution. 我发现了问题和解决方案。

I'm using function: 我正在使用功能:

var parseDate = d3.time.format('%Y-%m-%d %H:%M:%S').parse;

To process all data values, which are original in format yyyy-mm-dd hh:mm:ss 处理所有数据值,原始格式为yyyy-mm-dd hh:mm:ss

While set up brush.extent([val1, val2]) I need to use the same parseDate() function: 设置brush.extent([val1,val2])时我需要使用相同的parseDate()函数:

brush.extent([parseDate(val1), parseDate[val2]]);

Mariusz 马里乌什

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

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