刷新序数数据不起作用

the*_*fer 6 javascript graph ordinal d3.js

我非常喜欢这个图表及其功能,它非常适合我想要/需要的东西.我唯一需要改变的是我需要它来允许y轴上的序数数据,而我似乎无法使其工作(我是初学者).

当我将y比例从线性变为有序时:

yscale[k] = d3.scale.linear() .domain(d3.extent(data, function(d) { return +d[k]; })) .range([h, 0]));

yscale[k] = d3.scale.ordinal().rangePoints([h, 0]),
      yscale[k].domain(data.map(function(d) { return d[k]; })))
Run Code Online (Sandbox Code Playgroud)

刷新仍然会显示并自行工作,但它不会过滤掉选定的行.没有线条出现,除非我将它移动到轴的顶部,然后全部或大部分全部显示.当我用firebug介绍代码时,看起来它只是没有得到画笔区域中的线条而是所有(?)......我似乎无法弄明白.:(

如果有人可以帮忙解决这个问题(尤其是我必须改变的所有地方以及如何改变),我很乐意让这个工作并了解我做错了什么: - \

And*_*ard 5

刷过序数轴会返回像素,而刷定数轴会返回域.

https://github.com/mbostock/d3/wiki/SVG-Controls#wiki-brush_x

规模通常被定义为定量尺度,在这种情况下,范围是来自尺度域的数据空间; 但是,它可以改为定义为序数尺度,其中范围在距离尺度范围范围的像素空间中.

我的猜测是你需要向后工作并将像素转换为域值.我发现了这个问题,因为我正在尝试做同样的事情.如果我明白了,我会告诉你的.

编辑:这是一个很棒的例子,让你开始.

http://philau.willbowman.com/2012/digitalInnovation/DevelopmentReferences/LIBS/d3JS/examples/brush/brush-ordinal.html

function brushmove() {
  var s = d3.event.target.extent();
  symbol.classed("selected", function(d) { return s[0] <= (d = x(d)) && d <= s[1]; });
}
Run Code Online (Sandbox Code Playgroud)

他抓取选择范围(以像素为单位),然后选择所有系列元素并确定它们是否位于范围内.您可以根据该元素过滤元素,并返回数据键或您要添加到过滤器的内容.