【发布时间】:2013-05-11 15:14:18
【问题描述】:
我有一个通过 AJAX 调用在 JSON 输出中返回的对象数组,如下所示:
[{"applicants":"100","successful_applicants":"50","role":"program advisor"},
{"applicants":"120","successful_applicants":"80","role":"academic counselor"},
{"applicants":"100","successful_applicants":"50","role":"mathematics tutor"}]
我作为一个名为 data 的变量传入。
我目前正在调用 d3.pie 布局,如下所示:
$.post('search.php', {search_term:search_term}, function(data) {
var arc = d3.svg.arc()
.innerRadius(innerRadius)
.outerRadius(outerRadius);
var pie = d3.layout.pie()
.value(function (d) {return d.successful_applicants });
然后在为返回的数组中的每个对象创建一个 svg 之后,我追加如下...
var arcs = group
.append("path")
.attr("d", arc)
.attr("fill", "red")
.attr("stroke", "steelblue")
.attr("stroke-width", "1px")
.attr("transform", "translate(" + (box_width + stroke_width)/2 + "," + (box_height + stroke_width)/2 + ")");
}
我希望使用 d3.js 为返回的数组中的每个对象生成一个饼图,显示两个切片:显示成功`_申请者占的百分比>申请人。简而言之,这将是两个数据点“成功的申请人”和“不成功的申请人”,这两个数据点的总和应该生成一个完整的圆圈。
如何让 d3 动态生成所需的“成功申请者”和“失败申请者”数组?答案在 .value() 函数中吗?到目前为止,我能做的最好的事情是从数组中的每个对象中绘制一个值作为弧/切片(从行中可以明显看出......
.value(function (d) { return d.successful_applicants});
【问题讨论】:
-
它实际上是一个对象数组。因此,当您返回数据时,将数据分配给变量,然后您应该能够像访问任何数组或对象一样访问。数组[object.key]
-
感谢您的回复。不过,我还不够聪明,无法理解它,所以我重写了我的问题,希望它能引出更适合我水平的答案(笑/叹息)。不过感谢您的帮助:)
标签: d3.js