0
私はこのに基づいてchoroplethマップを作成しました。それが正常に動作し、しかし、私は今、私のTSVデータに異なる値を切り替えるには、ボタンを追加したいと思います:「率」と「合計」D3で複数の配列にデータをロードする方法
id rate total
Macedonia 32.7 671000000
Turkey 22.8 10560000000
は私が切り替えるためのボタンを使用できるように、私は2つのデータセットが必要だと思いますその間に
rate = [{"id":"Estonia","rate":"6.6","id":"Latvia","rate":"13.7"}]
total =[{"id":"Estonia","total":"457000000","id":"Latvia","total":"286000000"}]
....
<button class="opts" value="rate">Rate</button>
<button class="opts" value="total">Total</button>
d3.selectAll('.opts')
.on('click', function() {
var data = eval(d3.select(this).property('value'));
updateLegend(data);
})
私はデータを読み込むためにd3.queueを使用しています。データを正しい構造にするにはどうすればよいですか?これは、私はあなたが定義されrate
とtotal
変数はオブジェではなく、オブジェクトの配列で、これまで
d3_queue.queue()
.defer(d3.json, "borders.json")
.defer(d3.tsv, "data.tsv")
.await(ready);
function ready(error, rate, total) { //This isn't working
var rate = [{}];
var total = [{}];
data.forEach(function(d) {
rate[d.id] = +d.rate;
total[d.id] = d.total;
});
感謝を使用しての間で切り替えることが君は!それは私の配列を修正します。しかし、私は色が壊れているように見えますが、私はここで何を参照すべきか知っていますか? (d){}を返すhttps://plnkr.co/edit/ofFGECDYEPjokxn5EN7C?p=info – user3821345
私はこれを実行しませんでした。 d3を使って 'rate'と' total'を直接バインドしているわけではないので、実際には完全なコードを見てください。あなたのコードは次のようになります:https://plnkr.co/edit/gaXlgTuHxGL4zvBDSQkZ?p = preview レートと合計の値が非常に異なるので、 'updateLegend'の一環として' quantize.domain() 'を更新する必要があります。 – yeahwhat
良いアイデアです、ありがとう! – user3821345