我有其在從MySQL數據庫這種格式使用PHP返回此JSON數組:返回平均值/平均,用於爲選定值D3.js
[{"dateTimeTaken":"2013-02-28 05:04:16","reading":"10.7","parameterType":"Flouride"},
{"dateTimeTaken":"2013-02-28 05:04:21","reading":"10.5","parameterType":"Flouride"},
{"dateTimeTaken":"2013-02-28 05:04:26","reading":"15.1","parameterType":"pH"},
{"dateTimeTaken":"2013-02-28 05:04:31","reading":"4.4","parameterType":"Temperature"}...
我有兩個下拉列表 - 其中用戶將選擇)「parameterType」然後b)「月」。我想返回所選參數類型的選定月份內每天的平均值/平均值讀數。
不知道我怎麼能在D3做到這一點 - 但認爲它可能是沿着線的東西:由參數類型
- 過濾數據和月所選值
- 回報意味着「讀書」
- 更新圖表相應
不知道如果我完全沒譜雖然 - 或者我可以怎麼連實現這一目標?
UPDATE:
d3.select("#parameterType").on("change", function() { filterData(); });
d3.select("#dateTimeTaken").on("change", function() { filterData(); });
function filterData()
{
var selectedParameter = document.getElementById("parameterType").value;
var selectedMonth = document.getElementById("dateTimeTaken").value;
var selectedData = data.filter(function(d)
{
return d.parameterType == selectedParameter &&
d.dateTimeTaken.getMonth() == (selectedMonth-1);
});
console.log(selectedData);//RETURNING EMPTY ARRAY?
mean = d3.mean(selectedData,function(d) { return d.reading})
//UPDATE GRAPH
x.domain(d3.extent(data, function(d) { return d.dateTimeTaken; }));
y.domain(d3.extent(data, function(d) { return d.reading; }));
svg.select("path.line")
.attr("d", line(data));
svg.select(".x.axis")
.transition()
.duration(750)
.ease("linear")
.call(xAxis);
svg.select(".y.axis")
.transition()
.duration(750)
.ease("linear")
.call(yAxis);
}
});
});
感謝您的建議 - 出於某種原因,我無法工作selectedData正在返回一個空數組?請參閱上面的更新(先前在代碼中完成的解析 - 未顯示) – Newbie 2013-03-02 17:26:14
如果您的過濾器返回一個空數組,則意味着不符合任何單個元素的條件。您應該檢查進入過濾器的值並進行手動比較。字符串需要完全相同(包括大小寫和空格)。 – zjonsson 2013-03-04 14:07:00
謝謝 - 在我的查詢中,我在下拉列表中選擇月份名稱作爲顯示目的 - 當更改爲月份(它返回月份編號)完美工作時。將不得不在某個階段改回月份名稱 - 但當我來到它的時候會跨過那座橋:) – Newbie 2013-03-06 21:40:19