将多个d3.js数据集组合到一个数据对象中

时间:2014-05-09 14:46:37

标签: javascript d3.js underscore.js

我正在构建一个应用程序,允许用户指定许多可能的datasets进行比较。由于每个变量都有数百万个观察(我必须截断),我只希望浏览器加载用户请求的数据,而不是加载所有内容,只显示用户要求的内容。

我无法找到将d3数据对象合并为一个更大的对象的简单方法。以下是我将三个固定的单列“csv”文件组合在一起的内容:

<script src="d3.v3.js"></script>
<script src="queue.v1.js"></script>
<script src="underscore.v1.js"></script>
<script>

   queue().defer(d3.csv, "hdata1.txt") //one column text file with header and data
      .defer(d3.csv, "hdata2.txt") //as above, but with a different header and data
      .defer(d3.csv, "hdata3.txt") //yet another single column file
      .awaitAll(function(error, results){ 
         console.log("input data", results);  //input data [Array[5], Array[5], Array[5]]
         var data=d3.transpose(results).map(function(x){ return _.extend(x[0], x[1], x[2])} );
         console.log("output data", data), //output data [Object, Object, Object, Object, Object]
         some_func(data); 
      });

   function some_func(data){
      //do stuff with the data
   };
</script>

这样做有效,但是需要d3.transposed3.map_.extend来合理地组合对象似乎有点过分。是否有一种更优雅的方式来合并多个d3数据对象?

0 个答案:

没有答案