我需要一个饼图并找到Flot。它看起来简单而强大,但我发现的所有示例都使用固定值描述“数据”(例如[1,2]),但我需要显示动态数据。我有五个变量,最终必须加起来为100.我想只包含那些值为>的变量。 0,如果它们总共不到100,我想添加一个显示缺失百分比的元素。问题是我不知道如何动态构造数据参数。
我的代码如下。它有两个问题: 1)$ .plot什么都不做 - 没有错误,没有grapy 2)我不知道如何添加标签文本
function updatePieChart() {
var total = 0;
var data = new Array();
var verb = "";
var dataIndex = 0;
for (var dataIndex = 0; dataIndex < 5; dataIndex++) {
var duty = "DUTY_" + (dataIndex + 1);
var d = getData(duty + "_PERCENTAGETIMESPENT");
if (isNumeric(d)) {
d = parseInt(d);
if (d > 0) {
total += d;
data[dataIndex] = new Array();
data[dataIndex].push(d);
verb = getData(duty + "_SKILL");
if (verb == "") verb = duty + dataIndex;
log(duty + dataIndex + ' value: ' + d);
}
}
}
var count = data.length;
if (total != 100) {
if (total < 100) {
var missingDataNum = 100 - total;
data[count] = new Array();
data[count].push(missingDataNum);
verb = '**MISSING**';
log(verb + missingDataNum);
}
}
$.plot($('#pieChart'), data,
{
series: {
pie: {
show: true,
}
},
legend: {
show: false
}
});
}
答案 0 :(得分:1)
var ary = new Array();
ary.push(1); // this is where you would push the numbers that are supposed to add to 100
ary.push(2);
ary.push(23);
ary.push(40);
ary.push(10);
ary.push(8);
var result = 0;
for (var i = 0; i< ary.length; i++) {
result += ary[i];
}
现在result
应该包含总数。下一个:
if (result < 100){
var missing = 100 - result;
ary.push(missing);
}
然后我把missing
推到了数组的末尾。因此,数组的内容将精确到100,而“空”(在本例中为16)是图中的最后一个元素。
那是你在找什么?
编辑 - 我会执行以下操作以防止+在JS中混淆。
if (total != 100) {
if (total < 100) {
var missinDataNum = 100 - total;
series.push('{label: **MISSING**,data: ' + missingDataNum + '}');
}
}
*第二次编辑*
if (d1 > 0) series.push('{label: "' + d1v + '",data: ' + d1 + '}');
if (d2 > 0) series.push('{label: "' + d2v + '",data: ' + d2 + '}');
if (d3 > 0) series.push('{label: "' + d3v + '",data: ' + d3 + '}');
if (d4 > 0) series.push('{label: "' + d4v + '",data: ' + d4 + '}');
if (d5 > 0) series.push('{label: "' + d5v + '",data: ' + d5 + '}');