返回[object,Object]的工具提示

时间:2017-03-19 06:58:50

标签: javascript html d3.js scatter-plot

我正在尝试从免费代码阵营中完成散点图exercise。但是,我现在只用了几个小时学习d3,而且在按照lynda.com的教程后,我很难确定如何在工具提示中显示特定数据。This codepen就是我所拥有的到目前为止。

我通过执行以下操作来创建工具提示:

for(int i = 0; i < n ; i++){
        printf("Print %s", name);
        }   

然后我执行以下操作以显示工具提示

 var tooltip = d3.select('body').append('div')
.style('position', 'absolute')
.style('padding', '0 10px')
.style('background', 'white')
.style('opacity', 0)

当我用

替换.on('mouseover', function(d, i) { tooltip.transition() .style('opacity', .9) tooltip.html(d) .style('left', (d3.event.pageX - 35) + 'px') .style('top', (d3.event.pageY - 30) + 'px') }) .on('mouseout', function(d) { d3.select(this) .style('opacity', 1) }) myChart.transition() .delay(function(d, i) { return i * 20; }) .duration(1000) .ease('elastic')
tooltip.html(d)

什么都没有出现。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在D3中,第一个参数(通常名为d)是 datum 。现在,你的数据是这样一个对象:

{
    "Time": "38:36",
    "Place": 11,
    "Seconds": 2316,
    "Name": "Floyd Landis",
    "Year": 2006,
    "Nationality": "USA",
    "Doping": "Stripped of 2006 Tour de France title",
    "URL": "https://en.wikipedia.org/wiki/Floyd_Landis_doping_case"
}

因此,您必须通过键访问其值:

.on('mouseover', function(d, i) {
    tooltip.transition()
        .style('opacity', .9)
    tooltip.html("Name: " + d.Name + "<br>Year: " + d.Year + "<br>Dopping: " + d.Doping)
        .style('left', (d3.event.pageX - 35) + 'px')
        .style('top', (d3.event.pageY - 30) + 'px')
})

以下是您更新的CodePen:https://codepen.io/anon/pen/WpdyZv

相关问题