Круговые диаграммы jQuery Flot показывают значение данных вместо процента

Я не могу понять, как получить flot.пирог для изменения данных, показанных в метках, от процента "необработанных данных" до фактических данных. В моем примере я создал круговую диаграмму с количеством прочитанных/непрочитанных сообщений.

количество прочитанных сообщений: 50. Количество непрочитанных сообщений: 150.

созданный круг показывает процент прочитанных сообщений как 25%. На этом месте я хочу показать фактические 50 сообщений. Смотрите изображения ниже:

enter image description here

код, который я использовал для создания пирога:

var data = [
    { label: "Read", data: 50, color: '#614E43' },
    { label: "Unread", data: 150, color: '#F5912D' }
];

и:

    $(function () {
        $.plot($("#placeholder"), data,
           {
            series: {
                pie: {
                    show: true,
                    radius: 1,
                    label: {
                        show: true,
                        radius: 2 / 3,
                        formatter: function (label, series) {
                            return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">' + label + '<br/>' + Math.round(series.percent) + '%</div>';

                        },
                        threshold: 0.1
                    }
                }
            },
            legend: {
                show: false
            }
        });
    });

это возможно?

С ответом @Ryley я пришел к грязному решению. Когда я вывожу серию.данные были возвращены значения "1,150" и "1,50". Мне пришла в голову идея вычесть первые 2 символа возвращаемого значения и отобразить вычитаемое значение.

String(str).substring(2, str.lenght)

- это круговая диаграмма, которую я создал с этой решение:

enter image description here

Это не лучшее решение, но оно работает для меня. если кто-то знает лучшее решение....

4 ответов


Я нашел ответ на вопрос. Объект данных представляет собой многомерный массив. Для получения данных натурных используйте следующий код:

    $(function () {
    $.plot($("#placeholder"), data,
       {
        series: {
            pie: {
                show: true,
                radius: 1,
                label: {
                    show: true,
                    radius: 2 / 3,
                    formatter: function (label, series) {
                        return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">' + label + '<br/>' + series.data[0][1] + '</div>';

                    },
                    threshold: 0.1
                }
            }
        },
        legend: {
            show: false
        }
    });
});

обратите внимание на серию код ".data[0] [1] " для извлечения данных.


это несколько зависит от того, что вы имеете в виду с "на этом месте я хочу показать фактические 50 сообщений".
Предположим, что вы хотите иметь всплывающее окно div, когда они наводят курсор мыши на раздел чтения или непрочитанные, а затем показывают сообщения там.

первый шаг - сделать вашу круговую диаграмму интерактивной. Вам нужно добавить вот так:

legend: {
    show: true;
},
grid: {
    hoverable: true,
    clickable: true
}

Далее, вы должны привязать события click/hover к функциям, которые извлекают ваши сообщения и отображают они:

$("#placeholder").bind('plothover',function(e,pos,obj){

});

$("#placeholder").bind('plotclick',function(e,pos,obj){
    if (obj.series.label == 'Read'){
       //show your read messages
    } else {
       //show your unread messages
    }       
});

вот именно!


Теперь, если вы имели в виду, что вы просто хотите отображать все сообщения непосредственно в пироге все время, вам просто нужно изменить форматирование, чтобы ссылаться на глобальную переменную, содержащую ваши сообщения.


вы можете использовать:

formatter: function (label, series) {
    return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+Math.round(series.percent)+"%<br/>" + series.data[0][1] +'</div>';
},

попробуйте что-то вроде ProtoVis. Есть также несколько хороших ответов на SO со ссылками на другие бесплатные библиотеки визуализации полезных данных. Если у вас есть $ слияние графика тоже неплохо.