2010-01-03 79 views
0

我製作了一個頁面,以每週的數字繪製平均積雪。現在我們進入了2010年,第1周我的圖形在x軸(年周)上延伸了間隔。 我想要的是x軸上的週數(51,52,1,2等)和固定的間隔寬度。 任何人都知道該怎麼做?jquery flot和週數

example

<script id="source" language="javascript" type="text/javascript"> 
$(function() { 

var d1 = [ 
[201001,118],[200952,112],[200951,102],[200950,97],[200949,93], 
[200948,41],[200947,10],[200947,0]]; 

var d2 = [ 
[201001,33],[200952,31],[200951,31],[200950,25],[200949,23], 
[200948,12],[200947,0],[200947,0]]; 

$.plot($("#placeholder"), 
    [{data:d1,lines:{show: true}, 
    points:{show: true},label:"Mountain"}, 
    {data:d2,lines:{show: true},points:{show: true},label:"Valley"}], 
    {xaxis: {tickSize:1, tickDecimals:0 }} 
); 

}); 
</script> 
+0

我們現在正在2009/2010的第53周,因爲不是所有年份都恰好適合52周,所以本週不能跳過。 – Esko 2010-01-03 12:28:06

+0

我知道它提供了有關X軸在文檔中可以做的更多細節,因爲我不認爲這是我在評論中提供的實際「答案」。 – 2010-05-30 07:54:35

+1

重複http://stackoverflow.com/questions/1994796/jquery-flot-and-week-numbers我認爲。 – 2010-05-30 08:12:20

回答

3

,你可以定義一組爲x軸的 '刻度',並映射您的週數有

{xaxis: 
    { 
     ticks: [[201001,'1'],[200952,'52'],[200951,'51'],....] 
     tickSize:1, 
     tickDecimals:0 
    } 
} 

V2 - 似乎工作,看到flot chart

<div id="placeholder" style="width:600px;height:300px;"></div> 
<script id="source" language="javascript" type="text/javascript"> 
$(function() { 

var d1 = [ 
[200952,112],[200951,102],[200950,97],[200949,93],[200948,41],[200947,10],[200946,0]]; 

var d2 = [ 
[200952,31],[200951,31],[200950,25],[200949,23],[200948,12],[200947,0],[200946,0]]; 

$.plot($("#placeholder"), 
    [{data:d1,lines:{show: true}, 
    points:{show: true},label:"Mountain"}, 
    {data:d2,lines:{show: true},points:{show: true},label:"Valley"}], 
    {xaxis: { 
     ticks: [[200952,'52'],[200951,'51'],[200950,'50'],[200949,'49'],[200948,'48'],[200947,'47'],[200946,'46']], 
     tickSize:1, tickDecimals:1 }} 
); 

}); 
</script> 

看起來'200947'在您的數據集中是兩次。

+0

你會看看:http://www.sionvalais.com/snowcondition/les%202%20alpes/652 不能得到它的工作。幫助將不勝感激。 – mark 2010-01-10 12:15:37

+1

添加更新後的答案 – emeraldjava 2010-01-10 13:30:32

+0

那是對的,有兩條線 – mark 2010-01-10 18:26:50

-1

嘗試在tickformatter中寫入一個函數,該函數會將直集轉換爲週數。

例如:

xaxis: {   
    tickFormatter: function suffixFormatter(val, axis) {     
     return (val.toFixed(axis.tickDecimals) + 49) % 52; 
    } 
} 

我沒有測試此代碼,可能存在一些問題類型轉換。它應該取你的一組(0,1,2,...),並將它轉換爲新的組(49,50,51,52,1,2,...),所以,當你繪製你的幾周,在你的數據中,打電話給49周的第0周,它會顯示一週。爲了進一步的靈活性,你可以用return'「week」+((val.toFixed(axis.tickDecimals)+ 49)%52)替換返回值;''以便您的刻度顯示「第1周」,「第2周」等。

請參閱'Customizing the axes'下的flot api獲取更多信息。