Choropleth替代方法等等

时间:2017-03-16 16:23:43

标签: javascript json d3.js

在我之前的post1post2中,我设法在绘制地图时修复了等值线图/图例问题+绘制圆圈问题。

当我关注这个must-do tutorial关于等值时,当我在互联网上搜索时,我总能找到相同的逻辑

  

d3.csv(" my.csv",function(data){

     

d3.json(myjson,function(json){

     

for(var i = 0; i< data.length; i ++){

                  //Grab state name
                  var dataState = data[i].nom;

                  //Grab data value, and convert from string to float
                  var dataValue = data[i].population;

                  //Find the corresponding state inside the GeoJSON
                  for (var j = 0; j < json.features.length; j++) {

                      var jsonState = json.features[j].properties.nom;

                      if (dataState == jsonState) {

                          //Copy the data value into the JSON
                          json.features[j].properties.CA = dataValue;

                          //Stop looking through the JSON
                          break;
                      }
                  }       
              }

所以在我的情况下,我有一个75路径的地图(1路径=区域),我的csv文件有75行(1行= 1路径)

现在我试图做一些不同的事情

我的新csv有N行(N> 75,让我们说200),对于每一行,商店(属性+ lat + lon)会受到路径影响==&gt;我可以有5个商店/路径,例如

以下是我的问题:

1)我如何以不同方式编写我的合唱代码==&gt;我想扫描csv文件并为每个不同的路径返回特定属性的总和(这里是#34; income&#34;),以便将它写在我的json文件上???

2)当我点击特定的区域/路径时,我想在新的div(在我的情况下是#output)上显示与我的区域相对应的json文件(基本上我有75个json文件&# 34; region1.json&#34;,&#34; region2.json&#34;等等......&#34;)里面有圆圈(一个圆圈=一个商店,在我的csv文件中#34;名称&# 34;列&#34;)==&gt;我如何检索这个&#34;点击价值&#34;并调用正确/对应的json文件????

3)最后,如果我点击#output div的显示特定圈子,我想在第三个div上有一个图表==&gt;我如何正确写入我的第3个div以便正确显示(css,其他?? ==&gt;它也可以应用于#output)??

非常感谢您阅读此请求以及您的可用性和帮助

这里是plunker file(不介意sales.csv文件,我只是用它来尝试在点击路径时显示内容

再次感谢

1 个答案:

答案 0 :(得分:0)

d3 nest roll up是解决方案

d3.csv("source-data.csv", function(error, csv_data) {
 var data = d3.nest()
  .key(function(d) { return d.date;})
  .rollup(function(d) { 
   return d3.sum(d, function(g) {return g.value; });
  }).entries(csv_data);
});

更多信息here