我正在构建一个应用程序,允许用户指定许多可能的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.transpose
,d3.map
和_.extend
来合理地组合对象似乎有点过分。是否有一种更优雅的方式来合并多个d3数据对象?