2013-11-21 52 views
0

我一直在玩D3.js最近,試圖做一個小地圖應用與它的CSV文件。基本上,該應用程序將顯示一張世界地圖,當鼠標懸停在一個國家時,下圖將繪製一個碳排放線圖。如何設置y軸的規模D3.js與多列

的GeoJSON的文件,CSV文件是分開的,這意味着我必須調用一個函數來搜索數據在CSV文件中,而鼠標懸停射擊事件,這並不難。

但問題是當我嘗試繪製折線圖時。

{1990年: 「4768137.761」,1991年: 「4826703.418」,1992年: 「4922195.765」,1993年: 「5029767.21」,1994年:因爲我的數據是這樣的,我不能使用y.domain([0, d3.max(data, function(d) { return d.fookey; })]) 「5121559.554」 1995年: 「5156168.7」,1996年: 「5286046.506」,1997年: 「5419440.965」,1998年: 「5456092.63」,1999年: 「5531691.502」,2000: 「5713560.034」,2001年: 「5601404.839」,2002年: 「5650949.676」,2003年: 「5681664.468」,2004年: 「5790765.052」,2005年: 「5826393.624」,2006年: 「5737615.554」,2007年: 「5828696.5」,2008年: 「5656838.878」,2009年: 「5311840.184」,2010: 「5433056.536」,ISO:「美國「}

有沒有一種方法可以在每次啓動mouseover事件時動態設置yAxis域?

的代碼是在這裏github link here, everything is in the index.html

現在,我已經用域硬規則設立的Y軸([0,10000])反正是有走動嗎?

提前致謝!

+0

uhmm是粘貼在這裏的代碼,你正在使用的實際文件還是原始的csv有另一種結構?因爲這樣就不是什麼csv看起來像 – tomtomtom

+0

這是我正在使用的數據。儘管我找到了解決方案。(函數(d){return {key:d.key,value:+ d.value};})) .get(function(錯誤,行){console.log(rows);});' 可以用來重組我認爲是最好的解決方案的數據。 謝謝湯姆 –

+0

好吧,我認爲我在這裏沒有任何幫助,但看到與csv相關的結構使我認爲這也許就是代碼工作不正常的原因。很高興你找到解決方案! – tomtomtom

回答

0
d3.csv("path/to/file.csv") 
.row(function(d) { return {key: d.key, value: +d.value}; }) 
.get(function(error, rows) { console.log(rows); }); 

這段代碼實際上已經成功了。它允許我重建數據。

以前。我的數據是CSV文件,看起來像這樣

year country1 country2 country3 ... 
1900 29292929 2324244 45446666 
. 
. 
. 
2010 3995959 9598858 43549599 

因此,與

.row(函數(d){回報{{鍵:d.key,值:+ d.value} ;})

我可以選擇從csv文件中檢索哪個鍵和值。我自己用的,我做了

GET(函數(d){{回報一年:d.year,值:+ d [ISO]})

這裏的值:+ d [ iso],'iso'是由其他函數傳遞的字符串。所以這將最終給我的JavaScript對象這樣

數組[{ '值':2232323, '年': '2010'} ...]

我想這使得事情變得更好,因爲對於每個我徘徊的國家,它都會給我一些相關的數據。