1

我正在使用这个 d3 示例,实现了鱼眼。基本上,group 元素包含 rect 和 text 元素。如何在鼠标悬停时使组(bar + txt)更宽?

这是我的小提琴:http: //jsfiddle.net/30114/w4tfr68s/

代码:

    var xFisheye = d3.fisheye.scale(d3.scale.identity).domain([0, width]).focus(1000);

...

    svg.on("mousemove", function() {
        var mouse = d3.mouse(this);
        xFisheye.focus(mouse[0]);

        redraw();
    });

    function redraw() {

        bars
            .attr("transform", function(d){

            return "translate("+ xFisheye(d) +",0) scale(1, 1)";

        });
    }
4

1 回答 1

0

我有一个类似的问题。所以基本上用 y 的原始值乘以比例因子来翻译你的条对我有用。

function redraw(){
    bars
    .attr("transform", function(d) { 
         return "translate("+ xFisheye(d) +"," + y*1.2) + ") scale(1.2, 1.2)"; 
    });        
}

这应该有效。如果这有帮助,以下是我使用的代码:

.on("mouseover", function(d) 
{
     tool_tip.show(d);
     d3.select(this)
     .attr("transform", function(d) 
     { 
         return "translate("+ x(d.x0) +"," + y(d.length*1.2) + ") scale(1.2, 1.2)"; 
     });        
})

.on("mouseout", function(d) 
{
     tool_tip.hide(d);
     d3.select(this)
     .attr("height", height - y(d.length))
     .attr("transform", function(d) 
     { 
         return "translate("+ x(d.x0) +"," + y(d.length) + ") scale(1, 1)";
     });
});
于 2017-02-19T02:05:15.800 回答