2015-06-29 62 views
1

我擁有h:m格式的flot餅圖數據。使用hh:mm格式的flot餅圖數據

正常,如果我在下面的格式給出的數據也顯示餅圖正確

var data = [ 
    {label: "data1", data:10}, 
    {label: "data2", data: 20}, 

]; 

但如果不是int的/雙I直接與HH給出的數據:毫米格式我沒有得到任何

var data = [ 
    {label: "data1", data:10:30}, 
    {label: "data2", data: 20:20}, 

]; 

我的問題沒有將h:m轉換爲普通的int/double值是否有任何其他方式在我的flot餅圖中顯示h:m?

如果沒有,那麼哪個轉換會更好呢?

+0

'10:30'不是有效值......你不能以這種方式使用':'。只是猜測,但如果你嘗試一個字符串:''10:30「' – musefan

+0

謝謝。但它將只有當我把它轉換爲double.but我正在尋求是否有任何其他方式做這個沒有轉換主格式(小時:分) – kakon

+0

使用它作爲字符串不會正確顯示百分比。我也需要這個百分比。 – kakon

回答

0

Flot無法自動顯示您的時間值,您必須將它們轉換爲例如分鐘。然後可以使用labelFormatter函數以原始格式顯示餅圖切片的值。例如:

$(function() { 
    var data = [{ 
     label: "data1", 
     data: '10:30' 
    }, { 
     label: "data2", 
     data: '20:20' 
    }, 

    ]; 

    for (var i = 0; i < data.length; i++) { 
     var hours = parseInt(data[i].data.split(':')[0]); 
     var minutes = parseInt(data[i].data.split(':')[1]); 
     data[i].data = hours * 60 + minutes; 
    } 

    var plot = $.plot("#placeholder", data, { 
     series: { 
      pie: { 
       show: true, 
       label: { 
        radius: 0.5, 
        formatter: labelFormatter 
       } 
      } 
     }, 
     grid: { 
      hoverable: true, 
      autoHighlight: true 
     }, 
     legend: { 
      show: false 
     } 
    }); 

    function labelFormatter(label, series) { 
     var value = Math.floor(series.data[0][1]/60) + ':' + (series.data[0][1] % 60); 
     return "<div style='font-size:10pt; text-align:center; padding:2px; color:black;'>" + label + "<br/>" + Math.round(series.percent) + "%<br />" + value + "</div>"; 

    } 

}); 

查看此fiddle的完整示例。

+0

謝謝親愛的,但我已經解決了這個問題,使用tick值來繪圖。 – kakon