2010-01-03 75 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获取更多信息。