使用 D3 JavaScript 向数组中的圆添加工具提示

Adding tooltips to circles from an array with D3 JavaScript

我正在尝试向圆圈添加工具提示,如 this example. Here is my DEMO 中所示。

我试图用这种方法在工具提示上显示数组值,但工具提示没有出现在图表上:

function plotMeans(){
    var circle = svg.selectAll("circle.means")
            .data(numeric.transpose([x_means, y_means]));

    var tip = d3.tip()
            .attr('class', 'd3-tip')
            .offset([-10, 0])
            .html(function() {
                    return "<strong>Means:</strong> <span style='color:red'>" + [x_means, y_means] + "</span>";
            });

    svg.call(tip);

    circle.enter().append("circle")
            .attr('class', 'means')
            .attr("r", 10)
            .on("mouseover", tip.show)
            .on("mouseover", tip.hide);

    circle
            .transition().ease("linear").duration(200)
            .attr("cx", function(d, i) { return X(d[0]); })
            .attr("cy", function(d, i){return Y(d[1]);});


    circle.exit().remove();
}

关于如何在具有 [x_means, y_means] 个值的图表上显示工具提示有什么想法吗?

谢谢!

编辑: 我有 this visualisation,我想在红色圆圈上显示工具提示。

function plotMeans(){
    var circle = svg.selectAll("circle.means")
            .data(numeric.transpose([x_means, y_means]));

    console.log(numeric.transpose([x_means, y_means])); //returns 3 pairs of X-Y values

    var tip = d3.tip()
            .attr('class', 'd3-tip')
            .offset([-10, 0])
            .html(function() {
                for(var i = 0; i < k; i++){
                    return "<strong>Means:</strong> <span style='color:red'>" + JSON.stringify(meansjson) + "</span>";
                }

            });

    svg.call(tip);

    circle.enter().append("circle")
            .attr('class', 'means')
            .attr("r", 10)
            .on("mouseover", tip.show)
            .on("mouseout", tip.hide);

    circle
            .transition().ease("linear").duration(200)
            .attr("cx", function(d, i) { return X(d[0]); })
            .attr("cy", function(d, i){return Y(d[1]);});


    circle.exit().remove();
}

我想用工具提示显示红色圆圈的 X 和 Y 值。 console.log(numeric.transpose([x_means, y_means])); returns 三对 X-Y 值,但我不知道如何在红点上正确显示这些值。

你做的很酷。你犯了一个小错误:

当鼠标在圆上时,你想显示工具提示,当鼠标指针关闭时,你想隐藏它。因此,如果您更改以下行:

        .on("mouseover", tip.show)
        .on("mouseover", tip.hide);

至:

        .on("mouseover", tip.show)
        .on("mouseout", tip.hide);

有效。

__update__

只需添加此功能

function average(dataArray){
  var sum=0;
  for(var i=0; i< dataArray.length; i++){
    sum=sum+dataArray[i];
  }
  return sum/dataArray.length;
}

并按如下方式使用它:

return "<strong>Means:</strong> <span style='color:red'>" + [average(x_means), average(y_means)] + "</span>";