Javascript 基于不同的数据列更新悬停工具提示

Javascript 基于不同的数据列更新悬停工具提示,javascript,d3.js,Javascript,D3.js,我下面有一段代码,目的是在每个圆上都包含一个悬停工具提示。这个问题是,当我附加圆时,我返回的是lat/long数据列。工具提示似乎只适用于当前正在加载的数据列 我想在工具提示中显示其他数据列(城市、州等),但是我不确定如何在代码中调用这些数据列 总之,我想将d.state(我的数据集中的一个单独的列)调用到 “div.html(d.lng+”“+d.lat)” d3.tsv(“数据/读取_666.txt”) .世界其他地区(功能(d){ 返回{ permalink:d.permalink, 横向

我下面有一段代码,目的是在每个圆上都包含一个悬停工具提示。这个问题是,当我附加圆时,我返回的是lat/long数据列。工具提示似乎只适用于当前正在加载的数据列

我想在工具提示中显示其他数据列(城市、州等),但是我不确定如何在代码中调用这些数据列

总之,我想将d.state(我的数据集中的一个单独的列)调用到

“div.html(d.lng+”
“+d.lat)” d3.tsv(“数据/读取_666.txt”) .世界其他地区(功能(d){ 返回{ permalink:d.permalink, 横向:纵向浮动(d.lat), 液化天然气:浮球(d.long), 城市:d.city, 州:d州, 创建时间:时刻(d.创建时间:“YYYY-MM-DD HH:MM:ss”) }; }) .get(函数(错误,行){ if(err)返回控制台。error(err); window.site_data=行; }); }); //使用“永久链接”显示站点 var displaySites=功能(数据){ var sites=svg.selectAll(“.site”) .数据(数据、功能(d){ 返回d.permalink; }); sites.enter().append(“圆圈”) .attr(“类”、“站点”) .attr(“cx”,功能(d){ 回报预测([d.lng,d.lat])[0]; }) .attr(“cy”,函数(d){ 回报预测([d.lng,d.lat])[1]; }) .on(“鼠标悬停”,功能(d){ 过渡部() .持续时间(200) .样式(“不透明度”,.9); div.html(“状态”+d.State) .style(“左”,“d3.event.pageX)+“px”) .style(“top”,(d3.event.pageY-28)+“px”); }) .开启(“鼠标出”,功能(d){ 过渡部() .持续时间(500) .样式(“不透明度”,0); }) .attr(“r”,1) .transition().持续时间(400) .attr(“r”,7); 网站退出() .transition().持续时间(300) .attr(“r”,0) .remove(); };
解决方案:
必须使用正确的变量更新d3.tsv(),因此需要添加“state:d.state”以使其正常工作。然后,我可以在工具提示代码中调用它,例如,
data
中有什么内容?它是一个简单的.txt文件(从.tsv转换而来),包含“permalink”、“city”、“state”、“lat”、“long”列。我添加了一些代码,解释了如何加载数据集。刚开始工作,就在主帖子中添加了解决方案。谢谢请不要将解决方案编辑到原始帖子中。考虑写一个或删除问题AltoCube。
"div.html(d.lng + "<br>" + d.lat)"




  d3.tsv("data/read_666.txt")
    .row(function(d) {
      return {
        permalink: d.permalink,
        lat: parseFloat(d.lat),
        lng: parseFloat(d.long),
        city: d.city,
        state: d.state,
        created_at: moment(d.created_at,"YYYY-MM-DD HH:mm:ss")
            };
    })
    .get(function(err, rows) {
        if (err) return console.error(err);

      window.site_data = rows;
    });
});



//display the sites using "permalink"
var displaySites = function(data) {
  var sites = svg.selectAll(".site")
  .data(data, function(d) {
    return d.permalink;
  });

sites.enter().append("circle")
  .attr("class", "site")
  .attr("cx", function(d) {
    return projection([d.lng, d.lat])[0];
        })
  .attr("cy", function(d) {
    return projection([d.lng, d.lat])[1];
        })
            .on("mouseover", function(d) {
                 div.transition()
                         .duration(200)
                         .style("opacity", .9);
                 div.html("State" + d.state)
                         .style("left", (d3.event.pageX) + "px")
                         .style("top", (d3.event.pageY - 28) + "px");
                 })
         .on("mouseout", function(d) {
                 div.transition()
                         .duration(500)
                         .style("opacity", 0);
         })
        .attr("r", 1)
        .transition().duration(400)
            .attr("r", 7);


sites.exit()
.transition().duration(300)
  .attr("r",0)
  .remove();
 };