2017-08-21 171 views
0

我想重写Chart JS中的漂亮数字算法,并在y轴上仅显示两个标签(或tick):最大值和最小值价值。这些值都是浮点数。我看到回调函数(yAxis.ticks.callback)已经找到了滴答,所以我不认为这是做这件事的地方。任何帮助,将不胜感激。Chartjs:如何仅显示y轴上的最大值和最小值

回答

2

您可以使用Y轴下面的回调函数蜱以实现:

callback: function(value, index, values) { 
    if (index === values.length - 1) return Math.min.apply(this, dataArr); 
    else if (index === 0) return Math.max.apply(this, dataArr); 
    else return ''; 
} 

注:您必须使用单独的阵列数据值(这里是dataArr,而不是一个在线的。

编辑:

添加在y轴以下蜱配置,以使数据点与蜱完全一致:

min: Math.min.apply(this, dataArr), 
max: Math.max.apply(this, dataArr) 

ᴡᴏʀᴋɪɴɢᴇxᴀᴍᴘʟᴇ

var dataArr = [154.23, 203.21, 429.01, 637.41]; 
 
var chart = new Chart(ctx, { 
 
    type: 'line', 
 
    data: { 
 
     labels: ['Jan', 'Feb', 'Mar', 'Apr'], 
 
     datasets: [{ 
 
     label: 'LINE', 
 
     data: dataArr, 
 
     backgroundColor: 'rgba(0, 119, 290, 0.2)', 
 
     borderColor: 'rgba(0, 119, 290, 0.6)', 
 
     fill: false, 
 
     tension: 0 
 
     }] 
 
    }, 
 
    options: { 
 
     scales: { 
 
     yAxes: [{ 
 
      ticks: { 
 
       min: Math.min.apply(this, dataArr), 
 
       max: Math.max.apply(this, dataArr), 
 
       callback: function(value, index, values) { 
 
        if (index === values.length - 1) return Math.min.apply(this, dataArr); 
 
        else if (index === 0) return Math.max.apply(this, dataArr); 
 
        else return ''; 
 
       } 
 
      } 
 
     }] 
 
     } 
 
    } 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.6.0/Chart.min.js"></script> 
 
<canvas id="ctx"></canvas>

+0

感谢您的回答。这不是我正在寻找的。我的问题中的数据是浮点数,我希望y轴只显示数据集的最大值和最小值。例如,这些值可能是'[154.23,203.21,429.01,637.41]'。我想仅在y轴上显示最大值和最小值:'154.23'和'637.41'好数字算法舍入这些值,这不是我想要的。 –

+0

hm。看到更新的答案。希望这就是你想要的...... –

+0

更接近,但这个解决方案的问题在于,y轴上的值不一定与图表中的值一致。你用实际的最大值代替最高的“好数字”,用实际的最低值代替最低的“好数字”。最大值和最小值并没有完全放在应该落在y轴上的位置。这就是为什么我不认为可以通过单独使用回调来达到解决方案的原因。 –

相关问题