Javascript d3js中svg热图/颜色比例的工具提示

Javascript d3js中svg热图/颜色比例的工具提示,javascript,angularjs,d3.js,svg,Javascript,Angularjs,D3.js,Svg,我正在用AngularJS调整这个梯度。下面是我正在使用的数据集的一部分: var stays=[ { day:2, hour:1, time_spent:127 }, { day:4,

我正在用AngularJS调整这个梯度。下面是我正在使用的数据集的一部分:

var stays=[  
                 {  
                    day:2, 
                    hour:1, 
                    time_spent:127   
                 },
                 {  
                    day:4,
                    hour:1,
                    time_spent:141
                 },
                 {  
                    day:1,
                    hour:1,
                    time_spent:134
                 },
                 {  
                    day:5,
                    hour:1,
                    time_spent:174
                 },
                 {  
                    day:3,
                    hour:1,
                    time_spent:131
                 },
                 {  
                    day:6,
                    hour:1,
                    time_spent:333
                 }];
问题是,我想为热图中创建的每个正方形构造一个工具提示。工具提示如下:

var heatMap = svg.selectAll(".hour")
                  .data(stays)
                  .enter().append("rect")
                  .attr("x", function(d) { return (d.hour - 1) * gridSize; })
                  .attr("y", function(d) { return (d.day - 1) * gridSize; })
                  .attr("class", "hour bordered")
                  .attr("width", gridSize)
                  .attr("height", gridSize)
                  .style("stroke", "white")
                  .style("stroke-opacity", 0.6)
                  .style("stroke-width", 0.8)
                  .style("fill", function(d) { return colorScale(d.time_spent); })
                  .on("mouseover", function(d, i) {

                      // Construct tooltip
                      var tooltip_html = '';
                      tooltip_html += '<div class="header"><strong>' + 'Stays' + ' </strong></div><br>';

                      // Add info to the tooltip
                      angular.forEach(stays, function (d) {
                          tooltip_html += '<div><span><strong>' + makeid() + '</strong></span>';
                          tooltip_html += '<span>' + ' ' + d.time_spent + '</span></div>';
                          console.log(d.time_spent);
                      }, days);

                      // Set tooltip width
                      tooltip.html(tooltip_html)
                        .style("width", 300 + "px")
                        .style("left", (d3.event.layerX+10) + "px")
                        .style("top", (d3.event.layerY+10) + "px");

                      // Tooltip transition and more styling
                      tooltip.style('display', 'block')
                      .transition()
                        .ease('ease-in')
                        .duration(100)    
                        .style("opacity", .9);
                  })
                  .on("mouseout", function(d) {    
                      tooltip.transition()
                              .duration(100)
                              .ease('ease-in')
                              .style('opacity', 0); 
                  });
var heatMap=svg.selectAll(“.hour”)
.数据(停留)
.enter().append(“rect”)
.attr(“x”,函数(d){return(d.hour-1)*gridSize;})
.attr(“y”,函数(d){return(d.day-1)*gridSize;})
.attr(“类”、“小时边界”)
.attr(“宽度”,网格大小)
.attr(“高度”,网格大小)
.style(“笔划”、“白色”)
.style(“笔划不透明度”,0.6)
.样式(“笔划宽度”,0.8)
.style(“fill”,函数(d){return colorScale(d.time_-spend);})
.on(“鼠标悬停”,功能(d,i){
//构造工具提示
var工具提示\u html='';
工具提示html+=''+'保持'+'
'; //将信息添加到工具提示中 角度。forEach(撑杆,功能(d){ 工具提示(html++=''+makeid()++''; 工具提示html+=''+''+d.花费的时间+''; console.log(d.花费的时间); },天); //设置工具提示宽度 html(tooltip\uhtml) .样式(“宽度”,300+“像素”) .style(“左”(d3.event.layerX+10)+“px”) .style(“顶部”(d3.event.layerY+10)+“px”); //工具提示转换和更多样式 tooltip.style('显示','块') .transition() .ease('ease-in') .持续时间(100) .样式(“不透明度”,.9); }) .on(“mouseout”),函数(d){ tooltip.transition() .持续时间(100) .ease('ease-in') .style('opacity',0); });

这里的想法是,对于我访问的每个方块,工具提示将显示关联到该方块的标签(我仍然没有使用标签,但它们将是我显示的数据集的一部分,我使用
makeid()
函数创建随机名称),以及关联的
花费的时间\u
数据的细分。我现在用的是写完整的数字列表,而不是与每个正方形相关的数字。思想?谢谢。< /P> < P>而不是为每个单元建立TooToIP HTML,请考虑将数据附加到每个单元ReCt。创建单个数据div,并在光标移动到单元格上时填充它

我将此添加到热图渐变示例中。试试看

[代码>var>var事故={{{{{天:2,小时:2,小时:1,计数:141},{{天:1,小时:1,计数:1,计数:1,计数:134},{{{天:1,小时:2,小时:2,小时:1,小时:1,小时:1,计数:1,计数:127},{天:4,天:4,小时:2,小时:1,小时:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:1,计数:134},{{{{{{{{{天:1,1,1,1,1,1,1,1,1,1,1:1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,小时:2,计数:92},{天:6,小时:2,计数:257},{天:4,小时:3,计数:3,计数:73},{{天:4,小时:3,计数:73},{天:1,小时:1,小时:3,计数:3,计数:73},{{天:1,小时:1,小时:3,小时:3,小时:3,小时:3,计数:2,小时:7,计数:3,计数:73},{{{{天:1,天:1,1,小时:1,小时:1,小时:3,3,计数:3,计数:3,计数:3,计数:3,计数:3,计数:7,计数:73},{,{,{,{,{,{{,{{{{{{{{{{{{},},},},{天:1,天:1,天:1,天:1,1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,83},{天:3,小时:4,计数:45},{天:6,小时:4,计数:180},{天:4,小时:5,计数:5,计数:57},{{天:4,小时:5,计数:57},{天:1,小时:5,计数:5,计数:57},{{天:1,小时:5,小时:5,小时:5,小时:5,小时:5,小时:5,小时:5,计数:5,计数:5,计数:5,计数:5,计数:57},{,{,{天:1:1,天:1,天:1,天:1,1,1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:5,5,5,小时:5,5,计数:5,计数:5,计数:5,计数:5,计数:73},计数:73},},{,{,{{,{,{,{,{{{,{,{,{,{{{{,{{{{{{{{{{{{{天:3,小时:6,计数:117},{天:6,小时:6,计数:148},{天:4,小时:7,计数:284},{天:4,小时:7,计数:284},{{天:1,小时:7,计数:284},{天:1,天:1,小时:1,小时:7,小时:7,计数:7,计数:7,小时:7,小时:7,计数:284},{,{天:1,天:1,小时:1,小时:7,小时:7,计数:7,计数:7,计数:7,计数:7,计数:284},{,{,{,{,{,{,{,{天:1,天:1,天:1,1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,7,小时:7,7,数:7,计数:7,计数:7,计数:7,时间:8,计数:609},{天:3,小时:8,计数:846},{天:6,小时:8,计数:208}{天:4,小时:9,计数:286},{天:4,小时:9,计数:286},{天:4,小时:9,计数:1214},{{天:1,天:1,小时:1,小时:1,小时:1,小时:9,计数:9,计数:1214},{天:1,天:7,小时:4,小时:9,数:9,计数:9,计数:9,计数:9,计数:1214},{,{{{{{{{{天:1,天:1,天:1,天:1,1,1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:1,小时:9,9,9,计数:9,计数:9,计数:9,计数:9,计数:9,计数:1214},},{{{{,{{{,{{{{{{{{{{{{{{{{小时:10,计数:655},{天:3,小时:10,计数:684},{天:2,小时:11,计数:591},{{天:2,小时:11,计数:591},{{天:2,小时:11,计数:591},{{天:4,小时:4,小时:11,小时:11,小时:11,计数:11,计数:10,计数:10,计数:482},{,{天:2,天:2,小时:2,小时:2,小时:11,计数:11,计数:11,计数:11,计数:11,计数:591,计数:591},{,{,{,{{{{{{天:6,天:6,天:6,天:6:6,天:6,天:6,6,6,6,天:6,小时:6,小时:6,小时:6,小时:6,小时:6,小时:6,小时:6,小时:6,小时:6,小时:6,11,11,11,11,计数:时间:1,小时:12,计数:639},{天:5,小时:12,计数:736},{{天:7,小时:12,小时:3,小时:3,小时:3,小时:3,小时:3,计数:402},{{天:7,小时:12,计数:12,计数:402,计数:{,{天:3,小时:3,小时:3,小时:13,计数:13,计数:749},{{天:6,天:6,小时:3,小时:3,小时:3,小时:12,计数:12,计数:12,计数:402,计数:402},{,{,{,{,{,{,{,{,{{天:2,天:2,天:2,天:2,小时:2,小时:2,小时:2,小时:2,小时:2,小时:2,小时:2,小时:13,小时:13,计数:13,计数:13,计数:13,计数:13,计数:13,计数:8},},{{{{{,{{{4,小时:14,计数:847},{天:1,小时:14,计数:752},{天:6,小时:14,计数:983},{天:6,小时:14,计数:983},{天:6,小时:14,计数:983},{天:7,天:7,小时:7,小时:14,小时:14,小时:14,小时:14,小时:14,小时:14,小时:14,计数:14,计数:14,小时:14,小时:14,计数:14,计数:636},{,{{{{{{{{{天:7,天:7,天:7,天:7,小时:7,小时:7,小时:7,小时:7,小时:7,小时:14,小时:14,小时:14,小时:14,小时:14,小时:14,小时:14,计数:14,计数:14,计数:14,计数:14,计数:14,计数:14,计数:14,计数:14,计数:14,计数:14,计数:数数数数数数数时间:2,小时:16,计数:1101},{天:4,小时:16,计数:1158},{day:1,hour:16,count:1029},{day:5,hour:16,count:1364},{day:3,hour:16,count:1068},{day:6,hour:16,count:736},{day:2,hour:17,count:1303},{day:4,hour:17,count:1426},{day:1,hour:17,count 1270},{day:17,hour:17,count