2012-09-03 24 views
3

this question完全一樣,但由於我沒有聲望來對它進行提升(並且無法回答它),所以我將不得不再次提問...強制剔號爲整數

給出如下的圖表,即使圖表爲空,我如何強制蜱始終爲整數?目前,如果圖表中沒有數據,它將變爲0, 0.2, 0.4, 0.6, 0.8, 1.0,但在此圖表的上下文中,這沒有任何意義 - 正在顯示的內容只能包含整數。如果涉及的數字非常小,則偶爾可以顯示爲例如1.0, 1.5, 2.0, 2.5, 3.0, 3.5(等),這再次不是理想的。由於該圖表示的是一天中發生的事情,因此每天將從零開始並逐漸增長,第二天重置爲零。理想情況下,我希望剔號從0, 1, 2, 3, 4, 5開始,然後適當調整數據。

有什麼建議嗎?我在X軸和Y軸都試過tickInterval: 1(和550 ...),但是這似乎沒有任何作用......也許是JQPlot中的一個錯誤?

編輯:JSFiddle Example顯示問題。

$.jqplot('chartdiv', [ data.a, data.b ], { 
    title : "Title", 
    stackSeries : true, 
    seriesDefaults : { 
     renderer : $.jqplot.BarRenderer, 
     rendererOptions : { 
      barMargin : 15, 
      barDirection : 'horizontal' 
     }, 
     pointLabels : { 
      show : true, 
      stackedValue : false 
     }, 
    }, 
    seriesColors : [ "#651811", "#126542" ], 
    axesDefaults : { 
     tickRenderer : $.jqplot.CanvasAxisTickRenderer, 
     tickOptions : { 
      fontSize : '8pt' 
     } 
    }, 
    axes : { 
     xaxis : { 
      label : "X-Label", 
     }, 
     yaxis : { 
      renderer : $.jqplot.CategoryAxisRenderer, 
      ticks : [ "T1", "T2", "T3", "T4" ], 
      tickOptions : { 
       angle : -75 
      }, 
      label : "Y-Label", 
      labelRenderer : $.jqplot.CanvasAxisLabelRenderer, 
      labelOptions : { 
       angle : -90 
      }, 
     } 
    }, 
    highlighter : { 
     show : false, 
     showTooltip : false, 
    }, 
    legend : { 
     show : true, 
     location : 'e', 
     placement : 'outside', 
     labels : [ 'L1', 'L2' ] 
    } 
}); 
+0

data.a和data.b是什麼意思?我在這裏開始了一個小提琴:http://jsfiddle.net/32QBL/1/,但不能用虛擬數據複製你的問題。 – Mark

+0

我已經用顯示問題的值更新了小提琴。如果沒有爲每個人保存更新,那麼圖形數據應該是[[[0,1],[0,2],[0,3],[0,4]],[[0,1] ,[0,2],[0,3],[0,4]]]'。希望這可以讓它更清晰。編輯:見http://jsfiddle.net/32QBL/3/ – ipsi

回答

0

您可能會有更好的運氣設置軸的最大值和最小值,然後讓JQPlot填充刻度值。

// This is YOUR data set 
var series = [882, 38, 66, 522, 123, 400, 777]; 

var max; 

if (series.length > 0) { 
    // Instead of letting JQPlot pick the scale on the y-axis, let's figure out our own. 
    var series_max = Math.max.apply(null, series); 
    var digits = max.toString().length; 
    var scale = Math.pow(10, max_digits - 1); 

    max = (Math.ceil(series_max/scale)) * scale; 
} else { 
    // Since you sometimes have an empty dataset, then just pick an arbitrary max. 
    max = 10; 
} 

$.jqplot(
    'foo', 
    [series], 
    { 
     axes: { 
      yaxis: { 
       min: 0, 
       max: max 
      } 
     } 
     // Put your other config stuff here 
    } 
) 

這個基本的方法適用於任何整數。如果你正在使用浮點數並且它們大於1,你仍然可以通過將你的「series_max」轉換爲int來使用這種方法。如果您使用的浮點數小於1,則此方法可能不合適:它始終選擇1作爲y軸最大值。