我有數據的外部CSV文件中列像這樣:如何從對象d3.scale.linear使用數組獲得最大值()域()
name, field_goal_attempts, field_goal_makes
我想要使用線性比例尺,但在獲取我的域的最大值時遇到困難。
var yScale = d3.scale.linear()
.domain(0, d3.max(...
我很困惑,:
1)我是否應該把yScale功能外或
d3.csv("filename.csv", function(data) {
回調函數內;和
2)如何獲得field_goal_attempts列中的項目的最大值然後饋送到yScale函數。
這裏是我的代碼目前:
var yScale = d3.scale.linear()
.domain([0, 4000]) //d3.max(data, function(d) {return d })])
.range([0, 500]);
d3.csv("test.csv", function (data) {
svg.selectAll("rect")
.data(data)
.enter()
.append("rect")
.attr("fill", "blue")
.attr("x", magic_number) // I'm not concerned about the magic numbers at this point :)
.attr("y", 0)
.attr("width", another_magic_number)
.attr("height", function (d) {
return d.field_goal_attempts
})
.attr("id", function (d, i) {
return i
});
});
感謝您的幫助。這是我的第一個問題,非常感謝他們的幫助和友好的態度。我接受了Christopher Chiche的回答,因爲它不需要循環就能感受到「更多d3」。我實現了你的第二個解決方案,但不得不做兩個改動才能使它工作,即在d.field_goal_attempts前面使用'+',以便max返回2000而不是600,並將值放在domain()中的方括號中。我是新來的,所以我不想改變你的代碼,以防萬一我錯了,但認爲能很好地告訴你:)。再次感謝! – Emil 2013-05-04 02:05:43
是的,如果值存儲爲字符串,則需要field_goal_attempts前的'+'。而你對域名是一個數組的論點絕對正確!我將進行編輯。很高興我能幫上忙! – Superboggly 2013-05-06 18:04:30
在開始的時候不會添加那個+會給我很多問題,你是一個救星@Superboggly! – 2016-06-03 22:46:55