1
D3 v4でパックレイアウトを使用しています。私のcsv、 "funds"と "spend"の2つの値の間で円のサイズを切り替えたいとします。D3でon.clickイベントを使用してデータを更新する方法
これは円をスケールする働き:
rank(funds)
rank(spend)
on.clickイベントが円をスケーリングしないただしここで
d3.select("#funds")
.on("click", function() {
return rank(funds);
});
はデータ
https://plnkr.co/edit/vp3MuQZEU85cNI1KUlc5?p=info
とplunkerですvar diameter = 400
var color = d3.scaleOrdinal()
.range(["#ff433d", "#ff8e8b", "#ffc6c4", "#5c42ab", "#9d8ecd", "#cec6e6"])
var pack = d3.pack()
.size([diameter, diameter])
.padding(1.5)
var vis = d3.select("#svgid").append("svg")
.attr("width", diameter)
.attr("height", diameter)
.attr("class", "pack")
.append("g");
//DRAW CHART
d3.csv("bil-rupeex.csv", function(data) {
var root = { name: "decade", children: data };
//UPDATE DATA
funds = d3.hierarchy(root)
.sum(function(d) { return d.funds })
spend = d3.hierarchy(root)
.sum(function(d) { return d.spend })
function rank(data) {
pack(data);
var node = vis.selectAll("circle")
.data(data.descendants())
.enter().append("circle")
.attr("class", "node")
.attr("transform", function(d) { return "translate(" + d.x + "," + d.y + ")"; })
.attr("r", function(d) { return d.r; })
.attr("fill", function(d) {
return color(d.data.scam);
})
node.exit().remove();
}
rank(funds);
//BUTTONS
d3.select("#funds")
.on("click", function() {
return rank(funds);
});
d3.select("#spend")
.on("click", function() {
return rank(spend);
});
})
ここで[更新パターン]であるが(https://bl.ocks.org/mbostock/3808218)、あなたは参加のPOINを取得する必要があります。また、私はあなたが達成しようとしていることを確かめず、新しいデータでグラフを更新または再作成します。 –
ありがとうございます。私は私の質問を明確にしようとしました、これは何ですか? – user3821345