显示Chart js y轴中的所有值

时间:2016-06-09 02:59:55

标签: javascript html chart.js

我有以下图表: Chart

我想在y轴上写字母,所以我在图表选项中添加了一个开关,用于触发y轴值的相应字母。我的问题是y轴只显示偶数值,因此返回一半的开关值(xc,B,A +等等)。但是我想在y轴上显示所有值,0到13.有没有实现这个的方法?非常感谢帮助。

var data = {
  labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
  datasets: [{
    label: "My First dataset",
    fill: false,
    lineTension: 0,
    backgroundColor: "rgba(75,192,192,0.4)",
    borderColor: "rgba(75,192,192,1)",
    borderCapStyle: 'butt',
    borderDash: [],
    borderDashOffset: 0.0,
    borderJoinStyle: 'miter',
    pointBorderColor: "rgba(75,192,192,1)",
    pointBackgroundColor: "#fff",
    pointBorderWidth: 2,
    pointHoverRadius: 5,
    pointHoverBackgroundColor: "rgba(75,192,192,1)",
    pointHoverBorderColor: "rgba(220,220,220,1)",
    pointHoverBorderWidth: 2,
    pointRadius: 1,
    pointHitRadius: 10,
    data: [0, 1, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13],
  }]
};

var options = {
  scales: {
    yAxes: [{
      ticks: {
        // Create scientific notation labels
        callback: function(value, index, values) {
          switch (value) {
            case 0:
              return 'XC';
            case 1:
              return 'C';
            case 2:
              return 'B';
            case 3:
              return 'A';
            case 4:
              return 'A+';
            case 5:
              return 'BA';
            case 6:
              return 'N+';
            case 7:
              return 'C-';
            case 8:
              return 'D+';
            case 9:
              return 'D';
            case 10:
              return 'D-';
            case 11:
              return 'N';
            case 12:
              return 'N-';
            case 13:
              return 'NR';
            default:
              return '';
              break;
          }
        }
      }
    }]
  }
};

var ctx = $('#chart');
var chart = new Chart(ctx, {
  type: 'line',
  data: data,
  options: options
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.1.4/Chart.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<canvas id="chart"></canvas>

2 个答案:

答案 0 :(得分:6)

在刻度线对象中,您还可以提供minmaxstepSize来覆盖默认的自动调整行为

(可以在所有可用属性的docs中看到更多信息)

ticks: {
    min: 0,
    max: 13,
    stepSize: 1,
    ........REST OF THE OBJECT.....

Fiddle

答案 1 :(得分:0)

如果有人遇到类似的问题,但是彼此之间的步距不大于1(或其他具有相同除数的数字),则意味着上述解决方案将不起作用-这是我的解决方案。 只需返回chart.option.scales.yAxes

中“ afterBuildTicks”回调中的所有刻度
  chart.options.scales = {
  yAxes: [{
    ticks,
    afterBuildTicks: (scale, yTicks) => yourTicks
  }]
};