2014-09-25 76 views
0

我是d3的新手,尝试在一个框中为四个特定状态中的每一个绘制一些数据,类似于this page,但状态不是大陆,还有更多数据点。我有一个json数据集,其中包含来自这4个州的超过42,000个条目。D3:嵌套并排除某些键

要由国家重点,我用这个:

d3.json("data/business.json",function(json) { 
    var data=d3.nest() 
    .key(function(d) {return d.state;}) 
    .sortKeys(d3.ascending)  
    .entries(json); 

再后来做的一个方块每个状态:

// One cell for each state 
    var g=svg.selectAll("g").data(data).enter() 
    .append("g") 

(属性等)

很好,但我很快就发现数据集包含了一些我不想考虑的状态的数据,因此它绘制的数据比我想要的要多。

我想在不改变原始数据文件的情况下排除不是来自四个状态的数据。什么是最好的方式去做这件事?

回答

1

过滤您json

var keep = ["state1", "state2", "state3", "state4"]; 
json = json.filter(function(d) { return keep.indexOf(d.state) > -1; }); 
+0

没错!你能告诉我为什么同一行不起作用 json = json.filter(function(d){return keep.contains(d.state);}); 说不是功能。这不是有效的JS? – punstress 2014-09-25 09:40:12

+1

@punstress'array.contains()'是无效的JavaScript。 [这里](http://stackoverflow.com/questions/237104/array-containsobj-in-javascript)是一个相关的SO问题。 – Baz 2014-09-25 10:07:18

+0

不知道为什么我发现包含()如果它不是一种方法,虽然。 :/ – punstress 2014-09-25 10:17:06