我已经成功地创建了我想要的线条和情节,但不幸的是,我没有创建一个简单的悬停在线条上。
这是主代码:
var groupclusters = d3.nest()
.key(function(d) { return d.clustindex; })
.entries(expsdata);
var svg = d3.select("#container3")
.selectAll("svg")
.data(groupclusters)
.enter()
.append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform","translate(" + margin.left + "," + margin.top + ")");
svg.append("path")
.attr("fill", "none")
.attr("stroke", '#a65628')
.attr("stroke-width", 1)
.attr("class", "line")
.attr("d", function(d){
return d3.line()
.x(function(d) { return x(d.mtbname); })
.y(function(d) { return y(+d.clustcenters); })(d.values);
});
字符串
上面的代码创建了下面的图:
x1c 0d1x的数据
当我将鼠标悬停在这条线上以获取一个值时,我将如何实现它?
我在下面尝试了这个,但是在悬停时我得到了“undefined”,这意味着它找不到数据/值!但是数据在那里(groupclusters)!
svg.append("path")
.attr("fill", "none")
.attr("stroke", '#a65628')
.attr("stroke-width", 1)
.attr("class", "line")
.attr("d", function(d){
return d3.line()
.x(function(d) { return x(d.mtbname); })
.y(function(d) { return y(+d.clustcenters); })(d.values);
}).on('mouseover', function(d){
tooltip1.transition().duration(10)
.style("opacity",0.8)
.style("left",(d3.event.pageX+20)+"px")
.style("top", (d3.event.pageY-35)+"px");
tooltip1.html("<p>"+d.mtbname+"</p>");})
.on('mouseout', function(d){
tooltip1.transition().duration(100).style("opacity",0);});;
型
编辑
我使用的是d3 5.7.0。这些是我的量表:
var x = d3.scaleBand()
.domain(mtbsnameslist)
.range([ 0, width ]);
var y = d3.scaleLinear()
.domain([0, d3.max(expsdata, function(d) { return +d.clustcenters; })])
.range([ height, 0 ]);
型
1条答案
按热度按时间jobtbby31#
感谢Gerardo Furtado,我找到了答案!将鼠标悬停改为:
字符串