Javascript D3 v5 choropleth填充属性未完成

Javascript D3 v5 choropleth填充属性未完成,javascript,d3.js,choropleth,Javascript,D3.js,Choropleth,我正在用D3制作一张choropleth地图 我有一个基本世界地图和一个数据集,其中有国家名称和我试图填充的值 截断码 如果我这么做 svg.selectAll("my.path") .data(myGeoData.features) .enter() .append("path") .attr("d",d3.geoPath().projection(projection)) 我根据脚本前面定义的投影

我正在用D3制作一张choropleth地图 我有一个基本世界地图和一个数据集,其中有国家名称和我试图填充的值

截断码

如果我这么做

svg.selectAll("my.path")
    .data(myGeoData.features)
    .enter()
    .append("path")
    .attr("d",d3.geoPath().projection(projection))

我根据脚本前面定义的投影函数得到一张世界地图

但是,当我这样做时:

svg.selectAll("my.path")
    .data(myGeoData.features) //DataSet1
    .enter()
    .append("path")
    .attr("d",d3.geoPath().projection(projection))
    .data(myDataSetWithCountriesAndValues) //DataSet2
    .attr("fill", function(d){ return myColorScaler(d.valuesForShading) }
我得到的世界地图只填写了我数据集中的一些国家。 我想我理解问题所在。我的数据集1有177个值,而我的数据集2只有81个值。 数据集1是按字母顺序排序的,我注意到的是,在第81个国家填写之前,所有国家都对应。在那之后的一切都不会发生

因此,如果在数据集1中,第81个国家是拉脱维亚。然后,数据集中2所有按字母顺序排在拉脱维亚之后的国家都不会被填写。或者更确切地说,我认为它们是由附加路径的空值(“黑色”)填充的

几个小时来我一直在努力尝试不同的事情。不走运


如果有人知道如何帮助,这将是一种拯救生命的方法。

您需要某种方法来识别geojson和数据集中的每个地理特征,并且这些标识符必须在两个数据集中保持一致。是的,您只是通过索引进行匹配——geojson中的第一个特性与数据数组中的第一个项配对。您不需要重新分配路径数据。在本文的第四个标题下解释了一种方法,它使用d3v3,但介绍了将表格数据连接到空间数据的方法。如果我有时间,我将在本周晚些时候更新并给出新的答案