PHPを使用してmySQLデータベースからこの形式で返されるこのjson配列があります。
[{"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"}...
2 つのドロップダウン リストがあります。ユーザーは a) "parameterType" を選択し、次に b) "month" を選択します。選択した parameterType について、選択した月内の各日の平均/平均読み取り値を返したいと思います。
D3でこれを行う方法がわからない-しかし、次のようなものかもしれないと思った:
- 選択した値の parameterType と月でデータをフィルター処理します
- return は「読む」を意味します
- それに応じてグラフを更新する
しかし、私が完全に的外れであるかどうかはわかりません-または、どうすればこれを達成できますか?
アップデート:
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);
}
});
});