我正在嘗試使用從后端獲取的新資料更新我的 d3 氣泡圖。但是,似乎新資料被添加到圖表中,但舊資料點沒有被洗掉?這里有什么問題?這是我的功能:
function updateGeoData(ds, de) {
console.log("hit 233")
const size = d3.scaleLinear()
.domain([1, 100]) // What's in the data
.range([4, 50]) // Size in pixel
let updateData = $.get("/update_geo_data", {"ds":ds, "de":de});
updateData.done(function (result) {
var circles = svg.selectAll("myCircles").data(result, function(d) { return d; });
circles.attr("class", "update");
circles.enter().append("circle")
.merge(circles)
.attr("cx", d => projection([d.long, d.lat])[0])
.attr("cy", d => projection([d.long, d.lat])[1])
.attr("r", d => size(d.count))
.style("fill", "69b3a2")
.attr("stroke", "#c99614")
.attr("stroke-width", 2)
.attr("fill-opacity", .4);
circles.exit().remove();
});
}
uj5u.com熱心網友回復:
這部分就是你的問題:
svg.selectAll("myCircles")
myCircles 不是任何東西,因此選擇將始終為空,并且您將始終只附加到它。
svg.selectAll("circle")應該作為您的選擇。這將選擇當前繪制的所有圓圈,然后適當地輸入、更新、洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/371162.html
標籤:javascript d3.js
上一篇:修復可滾動熱圖d3中的x軸位置
下一篇:如何使用docker容器中的檔案
