2017-04-26 67 views
1

我正在嘗試在同一個svg上繪製兩個不同的圖。與飛行公里數相關的是平面碰撞(在y軸上)。我試圖把非致命的崩潰和致命的崩潰都放在圖上。 到目前爲止,我只是宣佈了兩類圓和繪製它們,但我覺得我可以用一個函數更有效地做到這一點。 到目前爲止,我有這個如何使用函數繪製兩個不同的數據集?

function myFunc(variable){ 
    count++; 
    canevas.selectAll(`.c${count}`) 
     .data(data) 
     .enter 
     .append("circle") 
     .attr("class",`c${count}`) 
     .attr("cx",d=>echelleKm(d.kmSemaine)) 
     .attr("cy",d=>echelleAccidents(d.variable)) 
     .attr("r",4) 
     .attr("opacity",.5) 
     .attr("fill",colors[count-1]); 
    } 
    myFunc(accidents85); 
    myFunc(accidents00); 

我在控制檯說"(index):109 Uncaught ReferenceError: accidents85 is not defined",我真的不明白得到一個錯誤。如果我在聲明函數之前做了console.log(d3.max(data,d=>d.accidents85),我可以在控制檯日誌中看到一些東西。

我覺得我錯過了一些明顯的東西,但我對d3.js和一般編碼相當陌生,所以任何幫助將不勝感激。

謝謝!

編輯:我把結果應該是什麼樣的圖片,如果我的工作功能我怎麼想here

+0

'd .accident85'正在訪問屬於'd'的屬性,這是你的數據項之一 - 嘗試'console.log(data [0] .accident85)'而不是 – thedude

+0

@thedude當我得到控制檯時,它給了我「未定義」。記錄你的建議。 –

+0

你能分享更多的代碼嗎?具體在哪裏'accidents85'定義 – thedude

回答

0

沒有變量稱爲accidents85accidents00任何地方所定義。由於你只是通過你的數據數組中的對象的屬性名稱,則必須使用引號:

myFunc("accidents85"); 
myFunc("accidents00"); 

然後,你myFunc內,使用括號表示法:

.attr("cy",d=>echelleAccidents(d[variable])) 
+0

太棒了,非常感謝! –

相關問題