我正在尝试在地图上制作月度数据动画。我已经将每个月的数据存储在一个数组中,当我尝试将这样的数据绑定到:.data(data.January)
时它会起作用。但是,当使用变量跟踪使用.data(data.monthName)
选择的当前月份时,它会在控制台中返回TypeError
并且不会呈现应用程序的其余部分。
我的猜测是我正在错误地访问键值,而d3有一种独特的处理方式。
以下是不起作用的功能。 (当滑块控件更改月份时会触发update()
。)
d3.json("data/avg_revisit.json", function(data) {
color.domain([20, 0]);
function update() {
var monthName = getMonthName(currentMonth);
colored_bars.selectAll("rect")
.data(data.monthName)
.enter()
.append("rect")
.attr("width", getLandWidth())
.attr("class", "bars")
.attr("height", function(d) {
return projection([0, d.latitude - 0.5])[1] - projection([0, d.latitude])[1];
})
.attr("opacity", 0.6)
.style("fill", function(d) {
//Get data value
var value = d.average_revisit;
if (value) {
//If value exists…
return color(value);
} else {
//If value is undefined…
return "#ccc";
}
})
//Define position of each rectangle by it's latitude from the data
.attr("transform", function(d) {
return "translate(" + projection([-180, d.latitude]) + ")"
});
}
答案 0 :(得分:2)
使用data[monthName]
代替data.monthName
。如果您使用变量来访问对象的键,则必须使用object[string variable]
。