D3.js d3散点图中的数据如何在d3选择之外被引用/调用

D3.js d3散点图中的数据如何在d3选择之外被引用/调用,d3.js,D3.js,我有一个d3散点图,想知道如何获得附加到单个记录(圆圈)的数据值,以便稍后在代码中调用它。 假设我们有以下数据: ID X Y A 1 1 B 2 2 C 3 3 如何获得记录B的X值 有人知道怎么做吗 thx如果jQuery是一个选项,那么在d3中,您可以使用jQuery.data()函数将d3数据直接附加到SVG元素。只需运行类似于.each(函数(d){$(this).data(d)}) 然后,您可以使用$(selector).data()访问任何位置的数据

我有一个d3散点图,想知道如何获得附加到单个记录(圆圈)的数据值,以便稍后在代码中调用它。 假设我们有以下数据:

ID  X   Y
A   1   1
B   2   2
C   3   3
如何获得记录B的X值

有人知道怎么做吗


thx

如果jQuery是一个选项,那么在d3中,您可以使用jQuery
.data()
函数将d3数据直接附加到SVG元素。只需运行类似于
.each(函数(d){$(this).data(d)})

然后,您可以使用
$(selector).data()
访问任何位置的数据,其中
selector
指向您感兴趣的一个或多个DOM元素,类似于
“#RecordB”


如果您的数据更复杂,(例如,
d={foo:'foo',bar:'bar}
),您将使用
$(选择器).data()[foo]
获取与选择器指向的数据关联的数据中键入到“foo”的任何数据。

您可能需要显示更多代码,因为这取决于附加数据的方式。但是假设你有

var circle = svg.selectAll("circle").data(myArrayOfDataObjects)
  .enter().append("circle");
可以为创建的DOM元素指定ID或类:

circle.attr("id", function(d) { return "dataRow" + d.ID; });
现在,您可以使用d3、纯JS或您选择的库来获取DOM元素的句柄。D3将其数据作为DOM元素上的
\uuuuu data\uuuuu
属性附加,因此您可以引用该属性来获取数据。D3还提供了获取该值的
.datum()
方法:

var myDataRow = d3.selectAll("#dataRowB").datum();
var xValue = myDataRow.X;
或者,在纯JavaScript中:

var myDataRow = document.getElementById("#dataRowB").__data__;
// etc

Thx,这很有帮助。