【发布时间】:2011-04-21 02:19:11
【问题描述】:
我非常沮丧地尝试修剪一组数组并将其交给 Protovis,该数组仅包含一组数据对象中的数字,如下所示,为每个对象绘制三个单独的饼图 (pv.Wedge)。 ..
myData = [{dept:"Accounting",sal:90000,equ:10000,trvl:267,extra:5000},
{dept:"Sales",sal:20000,equ:10000,trvl:3049,extra:7000},
{dept:"Consulting",sal:90000,equ:58000,trvl:983,extra:17000}];
据我所知,在 Protovis 中几乎不需要循环,但我似乎无法正确操作/解析 myData,所以我采用了显式循环。
我尝试了许多不同类型的循环,但我得到的最好的结果是在我希望饼图出现的空白区域下打印出数字。如果有人能给我一个关于我应该做些什么来实现这一目标的提示,我将不胜感激。目前我被困在 -
function getData(dept) {
var getvals = new Array();
for(idx in dept) {
for(i in idx) {
if(idx[i]=="^[0-9]+$") {
getme.push(idx[i]);
}
}
}
return getvals;
}
// myData = myData.map(function(d) {
// var valonly = new Array();
// for(key in d) {
// if(isNaN(d[key])==false) {
// valonly.push(d[key]);
// }
// }
// return valonly;
// });
var vis = new pv.Panel()
.width(w)
.height(h)
.data(getData(myData))
vis.add(pv.Wedge)
//.data(pv.normalize(getData(myData)))
.left(100)
.bottom(100)
.outerRadius(r)
.angle(function(d) d * 2 * Math.PI)
vis.add(pv.Label)
.bottom(0)
.left(100)
.textAlign("center")
//.text(data.dept + " - " + "total: " + hrsum);
vis.render();
【问题讨论】:
标签: javascript protovis information-visualization