İlk önce, csv'nizin ilk satırı, bu yöntemi kullanabilmek için virgülle ayrılmış sütun adlarının bir listesi olmalıdır. Bu mümkün değilse, bu konuda bir yorum ekleyin ve d3.csv.parseRows
bunun yerine nasıl kullanılacağını çözebilir miyim göreceğim d3.csv.parse
. d3.csv.parse
değerlendirici işlevi tarafından çağrılır .defer(function, url, assessor)
.
Dosyanızın şimdi şöyle göründüğünü varsayacağım:
danger.csv
iso,level
AFG,100
ALB,0
DZA,12
...
Bunu kullanarak ISO3'ten tehlike düzeyine kadar bir arama karması oluşturabilirsiniz.
var dangerByISO3 = d3.map();
queue()
.defer(d3.json, "url to topo.json")
.defer(d3.csv, "url to danger.csv", function(d) {dangerByISO3.set(d.iso, +d.level);})
.await(ready);
function ready(error, world) {
//You now have world as your available topojson
//And you have dangerByISO3 as your danger level hash
//You can lookup a danger level by dangerByISO3.get(ISO3 code)
}
Kod kılavuzu
var dangerByISO3 = d3.map();
Önce anahtar karmanız olarak işlev görecek bir d3.map () nesnesi oluşturun ve bunu dangerByISO3 değişkeninde saklayın.
queue()
Paralel yükleme için kuyruk kullanın.
.defer(d3.json, "url to topo.json")
Topojson'unuzu await fonksiyonuna iletilecek ilk argüman olarak yükleyin (hatadan sonra). Burada zincirleme bir fonksiyonun bulunduğu queue()
, ancak ayrı bir satırda listelenen (sonlandırıcı noktalı virgül yoktur queue()
) buradaki stile dikkat edin .
.defer(d3.csv, "url to danger.csv", function(d) {dangerByISO3.set(d.iso, +d.level);})
Burada iki şey oluyor. İlk olarak, bekleme işlevine iletilecek ikinci argümanınız olarak danger.csv'yi yüklüyorsunuz. Aşağıda göreceğiniz gibi, bu argüman aslında kullanılmamaktadır. Bunun yerine, d3.csv yükleme işlevine bir değerlendirici argümanı sağlanır. Bu değerlendirici csv'nin her bir satırını işleyecektir. Bu durumda, set fonksiyonunu dangerByISO3 olarak adlandırırız, böylece bir iso
anahtarın her kombinasyonu için level
, o anahtarla kullanılacak değeri ayarladık . +d.level
Notasyonu tekli kullanan +
bir sayıya d.level değerini zorlamak için.
.await(ready);
Her iki veri kaynağı yüklendikten sonra, bunlar işleve iki ayrı argüman olarak iletilir ready()
. Geri aramanın ilk argümanı her zaman meydana gelen ilk hatadır. Hata oluşmazsa, ilk argüman olarak null değeri iletilir. İkinci argüman birinci veri kaynağıdır (ilk görevin sonucu) ve üçüncü argüman ikinci veri kaynağıdır (ikinci görevin sonucu).
function ready(error, world) {...}
Bu geri arama işlevidir ready()
. İlk error
olarak, iki yükleme görevi başarıyla tamamlanırsa null olması gerektiği argümanını alırız (hataları yakalamak ve işlemek için dil eklemeniz gerekir). Sonra topojson verilerini nesne olarak alıyoruz countries
. Bu veriler, işlev gövdesinde benzer bir şeyle işlenmelidir .data(topojson.feature(world,world.objects.countries).features)
. Yana ready()
üçüncü bir argüman almaz, ikinci görev, bizim csv sonucu, basitçe atılır. Sadece anahtar karmasını oluşturmak için kullandık ve bundan sonra ihtiyacımız yoktu.