我尝试为下面的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"}
]
}
答案 0 :(得分:1)
错误是你计算范围的方式。 正如您的数据集是这样的:
{
"tweet":[
{"text": "hello"}
{"text": "goodbye"}
]
}
所以不要这样做:
d3.extent(data, function(element){ ...}
这样做:
d3.extent(data.tweet, function(element){ ... });