d3.extent() 在 d3js 执行中被跳过
d3.extent() gets skipped in d3js execution
我正在尝试为下面的 xDomain
变量赋值,但是当我使用 chrome 调试器时,该值未定义,并且控制台不打印 console.log("DOMAIN" + element.created)
行。是什么导致 d3 查看此行?
d3.json("tweets.json", function(error, data){
if (error) return console.warn(error);
console.log(data);
//THIS PART GETS SKIPPED OVER
var xDomain = d3.extent(data, function(element){
console.log("DOMAIN" + element.created);
time = parseTweetTime(element.created);
return parseTime.parse(time);
});
xScale.domain(xDomain);
var dots = svg.selectAll("circle")
.data(data.tweet)
.enter()
.append("circle");
dots.attr("r", function(d, i){
return 5;
})
.attr("cx", function(d){
console.log(d.created);
date = parseTime.parse(d.created);
return xScale(date);
})
.attr("cy", function(d){ return yScale(d.text.length)})
.style("fill", "black");
});
编辑:
这是 tweets.json 文件
的示例
{
"tweet":[
{"text": "hello"}
{"text": "goodbye"}
]
}
错误在于您计算范围的方式。
因为你的数据集是这样的:
{
"tweet":[
{"text": "hello"}
{"text": "goodbye"}
]
}
所以不要这样做:
d3.extent(data, function(element){ ...}
这样做:
d3.extent(data.tweet, function(element){ ... });
我正在尝试为下面的 xDomain
变量赋值,但是当我使用 chrome 调试器时,该值未定义,并且控制台不打印 console.log("DOMAIN" + element.created)
行。是什么导致 d3 查看此行?
d3.json("tweets.json", function(error, data){
if (error) return console.warn(error);
console.log(data);
//THIS PART GETS SKIPPED OVER
var xDomain = d3.extent(data, function(element){
console.log("DOMAIN" + element.created);
time = parseTweetTime(element.created);
return parseTime.parse(time);
});
xScale.domain(xDomain);
var dots = svg.selectAll("circle")
.data(data.tweet)
.enter()
.append("circle");
dots.attr("r", function(d, i){
return 5;
})
.attr("cx", function(d){
console.log(d.created);
date = parseTime.parse(d.created);
return xScale(date);
})
.attr("cy", function(d){ return yScale(d.text.length)})
.style("fill", "black");
});
编辑: 这是 tweets.json 文件
的示例{
"tweet":[
{"text": "hello"}
{"text": "goodbye"}
]
}
错误在于您计算范围的方式。 因为你的数据集是这样的:
{
"tweet":[
{"text": "hello"}
{"text": "goodbye"}
]
}
所以不要这样做:
d3.extent(data, function(element){ ...}
这样做:
d3.extent(data.tweet, function(element){ ... });