2016-06-08 312 views
21

我正在使用this庫在我的web應用程序中繪製圖表。問題是我的y軸有小數點。你可以看到在下面的圖片enter image description here跳過y軸上的小數點在chartJS

有沒有一種方法,我可以限制它只有數字?

這是我的代碼

var matches = $("#matches").get(0).getContext("2d"); 

var data = { 
     labels: labelsFromCurrentDateTillLastWeek, 
     datasets: [ 
      { 
       label: "Last Weeks Matches", 
       fillColor: "rgba(220,220,220,0.2)", 
       strokeColor: "rgba(220,220,220,1)", 
       pointColor: "rgba(220,220,220,1)", 
       pointStrokeColor: "#fff", 
       pointHighlightFill: "#fff", 
       pointHighlightStroke: "rgba(220,220,220,1)", 
       data: result 
      } 
     ] 
    }; 

    var options = { 
     scaleLabel: function (label) { 
      return Math.round(label.value); 
     } 
    }; 

    var myLineChart = new Chart(matches, { 
     type: 'bar', 
     data: data, 
     options: options 

    }) 

回答

54

在chartjs 2.x中,你可以通過一個userCallback到y軸刻度欄中選擇一個選項。在此您可以檢查標籤是一個整數

這裏有一個例子

options = { 
    scales: { 
     yAxes: [{ 
      ticks: { 
       beginAtZero: true, 
       userCallback: function(label, index, labels) { 
        // when the floored value is the same as the value we have a whole number 
        if (Math.floor(label) === label) { 
         return label; 
        } 

       }, 
      } 
     }], 
    }, 
} 

fiddle example

+2

作品像一個魅力! – mohsinali1317

10

另一種方法是如下使用fixedStepSize選項:

options = { 
    scales: { 
     yAxes: [{ 
      ticks: { 
       fixedStepSize: 1 
      } 
     }], 
    }, 
}; 
+3

這*應該很簡單。不幸的是,這個設置可以防止在有大量數據時跳過某些點。例如,當值爲0到1000時,chart.js將顯示從0到1000的所有整數,而不是顯示例如0,100,200等 – fracz

+0

有用的附加信息。因此,本質上,它適用於值範圍限於在可用空間內合理顯示的範圍的情況。 –