2016-05-26 6 views

ответ

4

Это была бы хорошая функция, но я не думаю, что есть прямой способ сделать это. Вы можете использовать обратный вызов afterBuildTicks в сочетании с параметрами min, max и autoSkip.

Исправление

afterBuildTicks обратного вызова передается объект масштаба. Объект scale имеет массив всех тиков, которые будут отображаться (хранятся в scale.ticks), чтобы вы могли установить тики в этом массиве. Chart.js пытается сделать вашу диаграмму красивой, поэтому она не будет показывать все тики по умолчанию. Чтобы исправить это, установите минимальное и максимальное значения минимального и максимального значений в вашем пользовательском диапазоне шкалы. Также установите autoSkip = false, чтобы убедиться, что все тики отображаются.

Пример

jsfiddle with your example scale

jsfiddle with a smaller scale range

var ticks = [11000, 10000, 7000, 3000, 1000, 500, 100]; 
var ctx = document.getElementById("myChart"); 
var myChart = new Chart(ctx, { 
    type: 'line', 
    data: { 
    labels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10"], 
    datasets: [{ 
     data: [6000, 5000, 8000, 2000, 10000, 3500, 6000, 2000, 4000, 6000] 
    }] 
    }, 
    options: { 
    scales: { 
     yAxes: [{ 
     ticks: { 
      autoSkip: false, 
      min: ticks[ticks.length - 1], 
      max: ticks[0] 
     }, 
     afterBuildTicks: function(scale) { 
      scale.ticks = ticks; 
      return; 
     }, 
     beforeUpdate: function(oScale) { 
      return; 
     } 
     }] 
    } 
    } 
}); 
+0

@L Бахр Спасибо за ваш ответ братан. это помогает мне! –

+0

Рад, что я мог помочь. Можете ли вы отметить это как принятый ответ, так как он ответил на ваш вопрос –

+0

Мне очень жаль, что это помогает, но он не отвечает точно, чтобы исправить мою диаграмму, потому что, когда я установил значение в миллионы, тысячи, сто, десять диаграмм нехорошо смотреть. Итак, на данный момент я не переопределял масштаб оси y. К сожалению, моя проблема сейчас находится в опасности, когда у нее есть миллион, тысячи значений. –