【发布时间】:2018-06-14 12:29:35
【问题描述】:
我对 Javascript 编程比较陌生,所以对于任何新手,我深表歉意。
我正在尝试使用 csv 中的数据实时更新饼图,但图表更新出现问题。
数据来自注册表,我想计算某个字段的实例数。我在我的脚本中准备数据如下:
function loadData(){
d3.csv("/data.csv",function(data){
temparr=[];
count = data.length;
var positions={};
data.forEach(function(d) {
if(!positions[d.POSITION])
{
positions[d.POSITION] = 1;
}
else
{
positions[d.POSITION] = positions[d.POSITION] + 1;
}
});
Object.keys(positions).forEach(function(prop){
var tempobj={};
tempobj["position"]=prop;
tempobj["value"] = positions[prop];
if(positions[prop] < min){min=positions[prop]}
if(positions[prop] > max){max=positions[prop]}
temparr.push(tempobj);
});
barData=temparr;
});
}
我正在更新的图表是通过附加到我正文中的 SVG 元素来创建的:
var g=chart.append("g").attr("transform","translate("+width/2+","+height/2+")");
arc = g.selectAll(".arc");
var temp = arc.data(pie(barData))
.enter().append("g")
.attr("class","arc");
temp.append("path")
.attr("d",path)
.attr("fill",function(d){return color(d.data.position);});
然后我使用以下方法更新它:
arc.data(pie(barData));
var temp = arc.enter().append("g")
.attr("class","arc");
arc.exit().remove();
temp.append("path")
.attr("d",path)
.attr("fill",function(d){return color(d.data.position);});
但是在我更改数据后,什么也没有发生。谁能告诉我我错过了什么?谢谢。
【问题讨论】:
标签: javascript d3.js charts