2014-09-25 81 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