Flot饼图未显示(修订后的代码)

时间:2012-12-14 18:28:54

标签: jquery flot

我需要一个饼图并找到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
        }
    });
}

1 个答案:

答案 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 + '}');