d3.js在鼠标悬停时改变线图点上的颜色和大小

时间:2014-05-16 19:21:27

标签: javascript jquery d3.js data-visualization

我用d3.js制作了一个折线图(见附图1)。

我设法在鼠标悬停时在图形点上插入工具提示。 我也想改变点的颜色和大小。我试过很多方面,但看起来真的很难。有帮助吗? 这是一段代码:

  svg.selectAll("dot")    
    .data(data)         
    .enter().append("circle")                               
    .attr("r", 5.5)
    .style("fill", "#fff8ee")    
       .style("opacity", .8)      // set the element opacity
.style("stroke", "#f93")    // set the line colour
 .style("stroke-width", 3.5) 
    .attr("cx", function(d) { return x(d.date); })       
    .attr("cy", function(d) { return y(d.close); })     
    .on("mouseover", function(d) {   

        div.transition()        
            .duration(70)      
            .style("opacity", .7)

             ;      
        div .html(formatTime(d.date) + "<br/>"  + d.close)  
            .style("left", (d3.event.pageX) + "px")     
            .style("top", (d3.event.pageY - 28) + "px");    
        })                  
    .on("mouseout", function(d) {       
        div.transition()        
            .duration(200)      
            .style("opacity", 0);   
    });

2 个答案:

答案 0 :(得分:32)

只需在处理程序中设置颜色和大小:

.on("mouseover", function(d) {
  d3.select(this).attr("r", 10).style("fill", "red");
})                  
.on("mouseout", function(d) {
  d3.select(this).attr("r", 5.5).style("fill", "#fff8ee");
});

答案 1 :(得分:-1)

我不知道为什么,但是虽然d3.select(this)可以正常工作,但现在不再可用。我现在使用d3.select(event.currentTarget)

因此,如果我们将svg视为图形,并且默认情况下其所有圆为红色,则可以在mouseover上将圆的颜色更改为绿色,并在{{ 1}}:

mouseout