2012-07-23 92 views
2

http://code.google.com/p/flot/jQuery的海軍報插件,圖和標籤訂購

通過默認的圖解和標籤按順序顯示,這是我所定義他們

$.plot($("#chart"), 
         plotData 
        , 
        { 
         series:{ 
         lines:{ show:true }, 
         points:{ show:true } 
         }, 
         grid:{ hoverable:true, clickable:true }, 
         yaxis:{ min:0, max:data.maxYaxisValue, tickDecimals:0}, 
         xaxis:{ tickFormatter:tickFormatter} 
        } 
       ); 

凡plotdata是一個陣列,具有結構:

var plotData = [ 
{data: statData1, color: plotColor1, label: label1}, 
{data: statData2, color: plotColor2, label: label2}, 
{data: statData3, color: plotColor3, label: label3} 
]; 

我想在一個訂單中顯示重複,其他標籤:

plot S:

plot1 plot2 plot3

圖例表:

plot3 plot1 plot2

我只有一個想法:通過腳本圖例表更改順序,我沒有看到這裏的選項此

if ($('#chart div.legend table tr').length > 1) { 
       var $tableRow = $('#chart div.legend table tr:last'); 
       $tableRow.insertBefore($('#chart div.legend table tr:first')); 
      } 

存在一個更好的方法來做到這一點?

回答

3

Github上的Flot主分支支持排序獨立於其系列的圖例標籤。

它剛剛在一個星期前添加了,所以如果您已經在使用master分支,那麼您可能只需要更新。如果您使用的是0.7,那麼您可以切換到主分支,如果您沒有問題,可以選擇不支持的分支,或者在歷史記錄中查找特定的提交併手動將其應用到您的副本。

+0

這個偉大的,謝謝你,但排序的選項是排序方法的功能。 我壓縮了我的例子,並且您如何看到現在的標籤順序不是降序或升序,而是任意順序。我只是想把數組的最後一個元素放在第一位 – 2012-07-23 13:17:17

+0

你仍然可以做到這一點;這只是一點點工作。您的排序功能接受系列a和b。迭代原始plotData數組,並通過標籤進行比較以在plotData中查找兩個系列的索引。然後,如果aIndex == plotData.length - 1,則返回-1將其排序後面的所有內容,否則返回aIndex - bIndex以保持其餘按索引定期排序。 – DNS 2012-07-23 13:26:06

+0

謝謝,但將來排序功能不是最好的方法=) LabelOrder選項在系列數據中會更方便=) – 2012-07-23 17:02:44