例えば、小学校のテストなどであれば最大値が100点で、数学80点、国語75点等と最大値が揃っているのでグラフがいい感じになるが、例えばセンター試験では英語200点、社会100点等であり、最大値を200としてしまうと、仮に社会が100点満点でもグラフ上はそこだけ凹んで見えてしまう。
解決方法としては、以下のstackoverflowに載っていた。
Set max value for each label with Chart.js
https://stackoverflow.com/questions/35975103/set-max-value-for-each-label-with-chart-js
fiddleは以下。
http://jsfiddle.net/cq1q5wuf/
コードはこんな感じ。
それぞれのツールチップを表示する前に、値をスケーリングしてから、スケーリング係数で除算している。
var scaling = [10, 10, 10, 1, 1, 1, 1];
var data = {
labels: ["Eating", "Drinking", "Sleeping", "Designing", "Coding", "Cycling", "Running"],
datasets: [
{
label: "My First dataset",
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: [5, 5, 9, 81, 56, 55, 40].map(function (e, i) {
return e * scaling[i];
})
}
]
};
var ctx = document.getElementById("myChart").getContext("2d");
var myRadarChart = new Chart(ctx).Radar(data, {
tooltipTemplate: function (valueObject) {
return valueObject.value / scaling[data.labels.indexOf(valueObject.label)];
}
});
Thoughts on chart.jsのレーダーチャートで最大値(スケール)が異なるデータをいい感じに表示する