ChartJS在某些xAxis和yAxis行上的自定义文本S

问题描述 投票:0回答:1

请参阅附带的屏幕快照,并附上我想做的事的示例。

enter image description here

基本上,我希望能够在某些yAxis和xAxis行上添加自定义文本。

chart.js
1个回答
1
投票

您可以使用Plugin Core API。它提供了可用于执行自定义代码的不同钩子。在下面的代码片段中,我使用afterDraw钩子在画布上绘制自定义文本。

为了将文本放置在xy上,可以使用硬编码像素数,也可以使用Scale Interface(即函数getPixelForValue)进行计算。

new Chart(document.getElementById('myChart'), {
  type: 'bar',
  plugins: {
    afterDraw: chart => {
      var ctx = chart.chart.ctx;
      var xAxis = chart.scales['x-axis-0'];
      var yAxis = chart.scales['y-axis-0'];
      ctx.save();
      ctx.font = "18px Arial";
      ctx.fillStyle = "red";
      var x = (xAxis.getPixelForValue('May') + xAxis.getPixelForValue('June')) / 2;
      ctx.fillText('My custom text here', x, yAxis.getPixelForValue(65));
      ctx.fillText('Another custom text here', 30, 15);
      ctx.restore();      
    }
  },
  data: {
    labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
    datasets: [{
      label: "My First Dataset",
      data: [65, 59, 80, 81, 56, 55, 40],
      fill: false,
      backgroundColor: ['rgba(255, 99, 132, 0.2)', 'rgba(255, 159, 64, 0.2)', 'rgba(255, 205, 86, 0.2)', 'rgba(75, 192, 192, 0.2)', 'rgba(54, 162, 235, 0.2)', 'rgba(153, 102, 255, 0.2)', 'rgba(201, 203, 207, 0.2)'],
      borderColor: ['rgb(255, 99, 132)', 'rgb(255, 159, 64)', 'rgb(255, 205, 86)', 'rgb(75, 192, 192)', 'rgb(54, 162, 235)', 'rgb(153, 102, 255)', 'rgb(201, 203, 207)'],
      borderWidth: 1
    }]
  },
  options: {
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
<canvas id="myChart" height="110"></canvas>
© www.soinside.com 2019 - 2024. All rights reserved.