2017-08-21 12 views
0

Chart JSの素敵な数値アルゴリズムをオーバーライドし、y軸に2つのラベル(またはティック)を表示したいとします。その価値。値はすべて浮動小数点数です。私はコールバック関数(yAxis.ticks.callback)にはすでに目盛りが表示されているので、これを行う場所ではないと思います。どんな助けもありがとう。Chartjs:Y軸に最大値と最小値のみを表示する方法

y軸はそれを達成するためにダニのためにあなたは、次のコールバック関数を使用することができます

答えて

2

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だ)、代わりにインラインのもの。

EDIT:

あなたの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軸上のどこに置くべきか正確には配置されていません。これは私が解決策がコールバックだけを使用することによって達成できるとは思わない理由です。 –

関連する問題