Open7

Chart.jsでレーダーチャートの背景色をカスタマイズする

kage1020kage1020

Chart.jsで↓のようなレーダーチャートを作りたい

結果

kage1020kage1020

https://teratail.com/questions/144533

        Chart.pluginService.register({
            beforeDraw: function (chart, easing) {
                if (chart.config.options.chartArea && chart.config.options.chartArea.backgroundColor) {
                    var ctx = chart.chart.ctx;
                    var chartArea = chart.chartArea;

                    ctx.save();
                    ctx.beginPath();
                    ctx.fillStyle = chart.config.options.chartArea.backgroundColor;
                    var scale = chart.scale;
                    var ticksAsNumbers = scale.ticksAsNumbers;
                    var max = ticksAsNumbers[ticksAsNumbers.length - 1];
                    for (var i = 0; i < ticksAsNumbers.length; i++) {
                        var point = scale.getPointPositionForValue(i, max);
                        if (i === 0) {
                            ctx.moveTo(point.x, point.y);
                        } else {
                            ctx.lineTo(point.x, point.y);
                        }
                    }

                    ctx.fill();
                    ctx.restore();
                }
            }
        });
kage1020kage1020

結論

const options: ChartOptions<'radar'> = {
  scales: {
    radarLinear: {
      min: 0,
      max: 5,
      grid: {
        lineWidth: 40,
        color: [
          'rgba(168, 219, 240,0.3)',
          'rgba(196, 224, 202,0.3)',
          'rgba(248, 245, 186,0.3)',
          'rgba(246, 212, 196,0.3)',
          'rgba(242, 199, 217,0.3)',
        ]
      },
      ticks: {
        stepSize: 1
      },
    },
  }
}

lineWidthは適宜調整する必要がある.
それこそpluginとかを使って.