2016-04-03 33 views
0

Bu example ürününe dayalı bir Choropleth haritası oluşturdum. "Toplam" "ücret" veD3'teki birden çok diziye veri yükleme

id rate total 
Macedonia 32.7 671000000 
Turkey 22.8 10560000000 

ben geçiş yapmak için düğmelerini kullanabilirsiniz böylece iki veri gerektiğini düşünüyorum: Ancak ben şimdi tsv verilerinde farklı değerler arasında geçiş yapmak için düğmeler eklemek istiyorum, gayet iyi çalışıyor bunlar arasında

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); 
    }) 

Verilerimi yüklemek için d3.queue kullanıyorum. Verilerimi doğru yapıya nasıl ulaştırabilirim? Bu defa

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; 

    }); 

Full code here

cevap

0

tanımladığınız rate ve total değişkenler objets diziler değil nesnelerdir ne var. Yani yazamıyorum:

total[d.id] = d.total; 

Sana ne yapmak istediğini düşünüyorum:

total.push({id: d.id, value: d.total}); 

Basit bir seçenek sadece data yapısına olabilir ve total

+0

Tanklarının kullanarak arasındaki arasında geçiş yapmak için sen! Bu benim dizilerimi düzeltir. Ancak renklerimi kırmış görünüyorsun, buraya referans vermem gereken şeyi biliyor musun? .enter(). append ("yol"). attr ("sınıf", işlev (d) {return quantize (d.id)} https://plnkr.co/edit/ofFgECDYEPjokxn5EN7C?p=info – user3821345

+0

Ben didn ' Daha önce tam kodlara bakmayın, çünkü doğrudan "dize" ve "toplam" d3'ü doğrudan kullanmıyorsunuz, aslında bir nesneyi kullanmak en iyisidir. Kodunuz şöyle görünebilir: https://plnkr.co/edit/gaXlgTuHxGL4zvBDSQkZ? p = önizleme Ayrıca, oran ve toplamlar çok farklı değerlere sahip olduğundan, ben 'updateLegend' parçası olarak quantize.domain() öğesini güncellemeniz gerektiğini düşünüyorum. – yeahwhat

+0

İyi fikir, teşekkürler! – user3821345

İlgili konular