gpt4 book ai didi

javascript - 刷序数数据不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 05:19:36 24 4
gpt4 key购买 nike

我很喜欢this graph及其功能,非常适合我想要/需要的东西。我唯一需要改变的是我需要它来允许 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]; })))

刷涂仍会显示并自行工作,但不会过滤掉选定的行。除非我将它移动到轴的最顶部,否则不会显示任何线条,全部或大部分都显示出来。当我用 firebug 单步执行代码时,它看起来只是没有得到画笔区域中的线条,而是所有(?)......我似乎无法弄清楚。 :(

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

最佳答案

刷序数轴返回像素,而刷定量轴返回域。

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

The scale is typically defined as a quantitative scale, in which case the extent is in data space from the scale's domain; however, it may instead be defined as an ordinal scale, where the extent is in pixel space from the scale's range extent.

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

编辑:这是一个很棒的例子,可以帮助您入门。

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]; });
}

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

关于javascript - 刷序数数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13203014/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com