2016-10-26 99 views
2

我嘗試使用下面的代碼創建一個氣泡圖: https://bl.ocks.org/mbostock/4063269 該代碼使用這種用於加載csv文件:使用d3.json代替d3.csv創建氣泡圖

d3.csv("flare.csv", function(d) { 
    d.value= +d.value; 
    if (d.value) return d; 
}, function(error, classes) { 
    if (error) throw error; 

我想加載一個JSON文件,而不是,所以我寫了這個:

d3.json("data1.php", function(d) { 
    d.forEach(function(data) { 
     data.value= +data.value; 
    }); 
    if (d.value) return d; 
    },function(error, classes) { 
    if (error) throw error; 

php文件的輸出是這樣的:

[{"disease":"Cold","value":"33"},{"disease":"Anemia","value":"23"},{"disease":"Hepatitis B","value":"21"},{"disease":"Gum disease","value":"19"},{"disease":"Lung Cancer","value":"17"},{"disease":"Diarrhea","value":"15"},{"disease":"Strep Throat","value":"13"},{"disease":"STDs","value":"11"},{"disease":"Heart Disease","value":"8"},{"disease":"Type 2 Diabetes","value":"6"}] 

由於某種原因,我的代碼(使用d3.json ...)不起作用。我只是得到一個空白頁面。我非常感謝你的投入。

回答

1

d3.csv,d3.json不一樣不是接受訪問函數。

所以,與其這樣:

d3.json("data1.php", function(d) { 
    d.forEach(function(data) { 
     data.value= +data.value; 
    }); 
    if (d.value) return d; 
    }, function(error, classes) { 
    if (error) throw error; 

它應該是這樣的:

d3.json("data1.php", function(error, classes) { 
    if (error) throw error; 

而且隨着classes回調裏面做你forEach

+0

現在它工作了,非常感謝。 – Abbas