Javascript D3和x27;鼠标器';并同时缩放

Javascript D3和x27;鼠标器';并同时缩放,javascript,d3.js,Javascript,D3.js,我有一个散点图,缩放功能完美。我正在尝试添加工具提示,以便在元素上的'mouseenter'上触发工具提示。我有这个功能,即调用了'mouseenter'事件,但当鼠标停留在上时,我无法缩放。有没有办法让它们同时发生 下面是再现问题的代码的最低版本 重置 风险值数据=[ { x:0.5,y:0.5 }, { x:0.6,y:0.6 }, { x:0.45,y:0.65 }, { x:0.76,y:0.61 }, { x:0.51,y:0.05 }, { x:0.16,y:6.8 } ]; 变

我有一个散点图,缩放功能完美。我正在尝试添加工具提示,以便在
元素上的
'mouseenter'
上触发工具提示。我有这个功能,即调用了
'mouseenter'
事件,但当鼠标停留在
上时,我无法缩放。有没有办法让它们同时发生

下面是再现问题的代码的最低版本


重置
风险值数据=[
{
x:0.5,y:0.5
},
{
x:0.6,y:0.6
},
{
x:0.45,y:0.65
},
{
x:0.76,y:0.61
},
{
x:0.51,y:0.05
},
{
x:0.16,y:6.8
}
];
变量绘图=火山绘图()
.x列(“x”)
.y列(“y”);
d3.选择(“#图表”)
.数据([数据])
.调用(绘图);
函数(){
可变宽度=960,
高度=500,
边距={顶部:20,右侧:20,底部:40,左侧:50},
X列,
点半径=10,
yColumn,
xScale=d3.scaleLinear(),
yScale=d3.scaleLog();
功能图(选择){
var innerWidth=width-margin.left-margin.right,//设置图表在其容器中的大小
innerHeight=高度-margin.top-margin.bottom;
选择。每个功能(数据){
xScale.range([0,innerWidth])
.domain(d3.extent(数据,函数(d){返回d[xColumn];}))
.nice();
yScale.范围([0,内部高度])
.domain(d3.extent(数据,函数(d){返回d[yColumn];}))
.nice();
var zoom=d3.zoom()
.scaleExtent([1,20])
.translateExtent([[0,0],[width,height]]
.on(“缩放”,缩放功能);
var svg=d3.select(this.append('svg'))
.attr('height',height)
.attr('width',width)
.append('g')
.attr('transform','translate('+margin.left+','+margin.top+'));
d3.选择(“#resetBtn”)
.style('top',margin.top*1.5+'px')
.style('left',margin.left*1.25+'px')
。打开(“单击”,重置);
svg.append('defs').append('clipPath'))
.attr('id','clip')
.append('rect')
.attr('height',innerHeight)
.attr(“宽度”,内部宽度);
//添加轴
var xAxis=d3.axisBottom(xScale);
var yAxis=d3.轴左(yScale);
var gX=svg.append('g')
.attr('class','x轴')
.attr('transform','translate(0',+innerHeight+'))
.呼叫(xAxis);
追加('text')
.attr('类','标签')
.attr('transform','translate('+width/2+','+(margin.bottom-6)+'))
.attr('text-anchor','middle')
.文本(X列);
var gY=svg.append('g')
.attr('class','y轴')
.呼叫(yAxis);
gY.append('text')
.attr('类','标签')
.attr('transform'、'translate(+(0-margin.left/1.5)+'、'+(height/2)+')rotate(-90'))
.style('text-anchor','middle')
.文本(Y列);
var zoomBox=svg.append('rect')
.attr('class','zoom')
.attr('height',innerHeight)
.attr('width',innerWidth)
.attr('填充','无')
.attr('pointer-events','all')
.呼叫(缩放);
var circles=svg.append('g')
.attr('class','circlesContainer')
.attr('clip-path','url(#clip');
圆圈。选择全部(“.dot”)
.数据(数据)
.enter().append('圆')
.attr('r',点半径)
.attr('cx',函数(d){return xScale(d[xColumn]);})
.attr('cy',函数(d){return yScale(d[yColumn]);})
.attr('class','dot'))
.attr('笔划','无')
.on('mouseenter',function(){
控制台日志(“hi”);
});
函数zoomFunction(){
var transform=d3.zoomTransform(此);
d3.选择全部(“.dot”)
.attr('transform',transform)
.attr('r',dotRadius/Math.sqrt(transform.k));
调用(xAxis.scale(d3.event.transform.rescaleX(xScale));
调用(yAxis.scale(d3.event.transform.rescaleY(yScale));
}
函数重置(){
var ease=d3.easePolyIn.指数(4.0);
d3.选择(“.zoom”)
.transition().持续时间(750)
.轻松(轻松)
.call(zoom.transform,d3.zoomIdentity);
}
});
}
chart.width=函数(值){
if(!arguments.length)返回宽度;
宽度=值;
收益表;
};
chart.height=函数(值){
如果(!arguments.length)返回高度;
高度=数值;
收益表;
};
chart.margin=函数(值){
if(!arguments.length)返回边距;
保证金=价值;
收益表;
};
chart.xColumn=函数(值){
如果
var svg = d3.select(this).append('svg')
    .attr('height', height)
    .attr('width', width)
    .append('g')
    .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')')
    .call(zoom);