我通过 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});