D3.js меняет цвет и размер на графике точки на мыши - программирование
Подтвердить что ты не робот

D3.js меняет цвет и размер на графике точки на мыши

Я сделал линейный график с помощью 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);   
    });
4b9b3361

Ответ 1

Просто установите цвет и размер в обработчиках:

.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");
});

Ответ 2

Я не знаю почему, но хотя d3.select(this) работал, он больше не работает. Теперь я использую d3.select(event.currentTarget).

Итак, если мы считаем svg графиком и все его круги по умолчанию являются красными, мы можем изменить цвет кругов на зеленый при mouseover и вернуть цвет на красный при mouseout следующим образом:

svg.on("mouseover", function(d){
d3.select(event.currentTarget)
.style("fill", "green");
})
.on("mouseout", function(d){
d3.select(event.currentTarget)
.style("fill", "red");
});