Javascript d3.js:输入更新退出模式-未删除旧点

Javascript d3.js:输入更新退出模式-未删除旧点,javascript,d3.js,Javascript,D3.js,我正在尝试在下面的图表上执行输入-更新-退出模式(该模式是在SO的一些非常友好的ppl的巨大帮助下构建的,但不幸的是,我现在再次陷入困境。我无法使该模式正常工作,但我确定我选择了正确的对象(在下面的代码中名为heatDotsGroup) 然而,我可以在Chrome的开发者工具中检查这个对象是否包含节点(椭圆),但是模式不起作用,因此很明显我做错了什么 有什么想法吗?非常感谢 函数热图(数据集){ var svg=d3。选择(“图表”) .选择(“svg”) var xLabels=[], yL

我正在尝试在下面的图表上执行输入-更新-退出模式(该模式是在SO的一些非常友好的ppl的巨大帮助下构建的,但不幸的是,我现在再次陷入困境。我无法使该模式正常工作,但我确定我选择了正确的对象(在下面的代码中名为
heatDotsGroup

然而,我可以在Chrome的开发者工具中检查这个对象是否包含节点(椭圆),但是模式不起作用,因此很明显我做错了什么

有什么想法吗?非常感谢

函数热图(数据集){
var svg=d3。选择(“图表”)
.选择(“svg”)
var xLabels=[],
yLabels=[];
对于(i=0;ixLabels[d]),
y:d3.axisLeft(scale.y).tickFormat((d,e)=>yLabels[d]),
};
函数updateCales(数据){
scale.x.domain([0,d3.max(数据,d=>d.xKey)]),
scale.y.domain([0,d3.max(数据,d=>d.yKey)])
}
var colorScale=d3.scaleQuantile()
.domain([0,colors.length-1,d3.max(数据集,函数(d){return d.val;})])
.范围(颜色);
var zoom=d3.zoom()
.scaleExtent([1,点高度])
。打开(“缩放”,缩放);
变量工具提示=d3。选择(“主体”)。追加(“div”)
.attr(“id”、“工具提示”)
.样式(“不透明度”,0);
//SVG画布
svg=d3。选择(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.呼叫(缩放)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
//剪辑路径
svg.append(“clipPath”)
.attr(“id”、“剪辑”)
.append(“rect”)
.attr(“宽度”,宽度)
.attr(“高度”,高度+点高度);
//热图点
var heatDotsGroup=svg.append(“g”)
.attr(“剪辑路径”、“url(#剪辑)”)
.附加(“g”);
//创建X轴
var renderXAxis=svg.append(“g”)
.attr(“类”、“x轴”)
//.attr(“变换”、“平移(0)”+scale.y(-0.5)+”)
//.呼叫(axis.x)
//创建Y轴
var renderYAxis=svg.append(“g”)
.attr(“类”、“y轴”)
.呼叫(y轴);
函数缩放(){
d3.event.transform.y=0;
d3.event.transform.x=Math.min(d3.event.transform.x,5);
d3.event.transform.x=Math.max(d3.event.transform.x,(1-d3.event.transform.k)*宽度);
//console.log(d3.event.transform)
//更新:重新缩放x轴
调用(axis.x.scale(d3.event.transform.rescaleX(scale.x));
//确保仅缩放x轴
heatDotsGroup.attr(“transform”,d3.event.transform.toString().replace(/scale\(.*?)/,“scale($1,1)”);
}
调用(renderPlot、dataset)
函数renderPlot(选择,数据集){
//做斧头吗
UpdateCales(数据集)
选择。选择('.y.axis')。调用(axis.y)
选择。选择(“.x.axis”)
.attr(“变换”、“平移(0)”+scale.y(-0.5)+”)
.呼叫(axis.x)
//做图表
const update=heatDotsGroup.selectAll(“椭圆”)
.数据(数据集);
更新
.输入()
.append(“椭圆”)
.attr(“cx”,函数(d){return scale.x(d.xKey)-xBand.bandwidth();})
.attr(“cy”,函数(d){return scale.y(d.yKey)+yBand.bandwidth();})
.attr(“rx”,点宽度)
.attr(“ry”,圆点高度)
.attr(“填充”,功能(d){
返回颜色刻度(d.val);}
)
.merge(update).transition().持续时间(800);
update.exit().remove();
}
};
#单击我{
高度:50px;
宽度:150px;
背景颜色:淡紫色;
}

热图
函数运行(){
var数据集=[];
对于(设i=1;i<360;i++){//360
对于(j=1;j<7;j++){//75
dataset.push({
xKey:我,
xLabel:“xMark”+i,
console.log(update.size(),update.exit().size()) // *Without any merge*