任何人都可以帮忙吗?我的数据正在被从两个下拉列表中选择的值过滤 - 然后嵌套/卷起以获得这些相同值的每日平均值。下面的代码出现“解析d错误的问题”。尽管过滤器和嵌套函数都返回了正确的数据,但是当我尝试将这些数据应用于线图来更新时,会出现问题?解析嵌套对象的错误?
d3.select("#parameterType").on("change", function()
{
d3.select("#dateTimeTaken").on("change", function()
{
var selectedParameter = document.getElementById("parameterType").value;
var selectedMonth = document.getElementById("dateTimeTaken").value;
//filter data by selected parameter and month
var selectedData = data.filter(function(d) {
return d.parameterType == selectedParameter &&
+d.dateTimeTaken.getMonth() == (selectedMonth - 1);});
console.log(selectedData);//returning correct data
//get average reading for each day within selected month
var newdata = d3.nest()
.key(function(d) {return d3.time.day(d.dateTimeTaken);})
.sortKeys(d3.ascending)
.rollup(function(d)
{
return {
mean: d3.mean(selectedData, function(d) {return +d.reading;})};
})
.entries(selectedData);
console.log(newdata);//returning correct data
//UPDATE GRAPH
//not returning correct max values?
x.domain(d3.extent(newdata, function(d) { return d.key; }));
y.domain([0, d3.max(newdata, function(d) { return d.values; })]);
svg.select("path.line")
.attr("d", line(newdata));
svg.select(".x.axis")
.transition()
.duration(750)
.ease("linear")
.call(xAxis);
svg.select(".y.axis")
.transition()
.duration(750)
.ease("linear")
.call(yAxis);
看起来像是[line accessors]的问题(https://github.com/mbostock/d3/wiki/SVG-Shapes#wiki-line_x)。你能否更新你的代码来包含你如何初始化'line'变量? – 2013-03-10 12:22:35
全部要点:https://gist.github.com/Majella/202df0a4a5a3ad20fb92 – Newbie 2013-03-10 12:55:32