私はバブルグラフを作成しており、クリックイベントを各サークルに付けました。円をクリックすると、バブルグラフは、より詳細な情報を表す新しいグラフに置き換えられます。ここでクリックイベントでD3 SVGオブジェクトにアクセス
は、コードの一部です:
svg.selectAll("circle")
.data(dataset)
.enter()
.append("circle")
.attr("cx", function(d) {
return scaleX(d[2]);
})
.attr("cy", function(d) {
return scaleY(100 - d[1]);
})
.attr("r", function(d) {
return d[1];
})
.attr("fill", "#4eb157")
.attr("stroke", "#00c4d4")
.attr("stroke-width", function(d) {
return d[1]*(1-d[2]/100)*1.5;
})
.on("click", function()
{
svg.selectAll("circle")
.data(new_dataset)
.enter()
.append("circle")
.attr("cx", function(d) {
return scaleX(d[2]);
})
.attr("cy", function(d) {
return scaleY(100 - d[1]);
})
.attr("r", function(d) {
return d[1];
})
.attr("fill", "#4eb157")
.attr("stroke", "#00c4d4")
.attr("stroke-width", function(d) {
return d[1]*(1-d[2]/100)*1.5;
});
svg.selectAll("text")
.data(new_dataset)
.enter()
.append("text")
.text(function(d) {
return d[0];
})
.attr("x", function(d) {
return scaleX(d[2]);
})
.attr("y", function(d) {
return scaleY(100 - d[1]);
})
.attr("font-family", "sans-serif")
.attr("font-size", "11px")
.attr("fill", "red");
});
問題は、私が円をクリックすると、グラフ全体が消えますが、新しいグラフが可視化されていないしています。私は、オンクリック機能の実行中に、svgオブジェクトが初期状態から変更されていることを認識しました。特に、svgを最初に作成していても、baseURI、clientHeight、clientWidthなどのプロパティのいくつかはもう設定されませんオブジェクト。ここでは、私は、SVGオブジェクトを作成しているコードです:
var svg = d3.select("body").append("svg")
.attr("width", w)
.attr("height", h);
私の質問はなぜ新しいグラフが表示されません?これはsvgオブジェクトのプロパティが変更されたためですか?新しいグラフをビジュアル化するために、クリック機能で何を変更する必要がありますか?
ありがとうございます!