我发现很少有关于使用JSON文件进行映射和使用公共密钥加入指标的CSV文件的d3文档。
如果可能,我想使用d3.queue()
。到目前为止,我一直在使用d3.map().set
,但我发现它用于单键,值对,并且似乎不可用于> 1个值。如果我在这里,请有人纠正我。
我试图利用this bl.ock中找到的双for
循环。这里的创建者正在使用两个JSON文件,而且我根据自己的需要很少运气。下面是他的两个JSON文件的链接,这是值得的。
要使用的连接键(我说比SQL好得多)是来自JSON的counties.id
和CSV中的county_fips
值。
CSV中的county_fips
是否与其相关的指标趋于平缓,这是否有问题?上面链接的示例中的双for
循环使用JSON的层次结构。
d3.queue()
.defer(d3.json, "https://d3js.org/us-10m.v1.json")
//.defer(d3.csv, "countymetrics_json.csv" , function(d) {metrics.set(d.county_fips, +d.actual_margin);})
.defer(d3.csv, "https://raw.githubusercontent.com/MatthewSnellOKC/mapping/master/merge/countymetrics_json.csv", function(d) {metrics.set(d.county_fips, +d.actual_margin);})
.await(ready);
function ready (error, us) {
if (error) throw error;
var counties = us.objects.counties.geometries;
}
答案 0 :(得分:0)
我已使用d3.queue()
和d3.map().set
转换,并且能够使用双for
循环将CSV加入JSON。请参阅下面的工作代码。
d3.json("https://d3js.org/us-10m.v1.json", function(error, us) {
if (error) throw error;
d3.csv("countymetrics_json.csv", function(error, csv) {
var counties = us.objects.counties.geometries;
csv.forEach(function(d, i) {
counties.forEach(function(e, j) {
if (d.county_fips == e.id) {
e.actual_margin = d.actual_margin;
e.state_code = d.state_code;
e.state_name = d.state_name;
e.county = d.county;
e.county_population = d.county_population;
e.business_population = d.business_population;
e.active_merchants = d.active_merchants;
e.actual_margin = d.actual_margin;
}
})
})
})
});