Bagaimana untuk memaparkan teks pada carta bar ChartJS?
P粉578343994
P粉578343994 2023-10-23 14:58:30
0
2
630

Saya perlu menulis teks pada bar dalam carta menggunakan chart.js

var ctx = document.getElementById("myChart");
 var myChart = new Chart(ctx, {
     type: 'bar',
     data:data,
     options: {           
         scales: {
             yAxes: [{
                 ticks: {
                     beginAtZero:true
                 }
             }]
         }
     },
     responsive : true,
     showTooltips : false,
     showInlineValues : true,
     centeredInllineValues : true,
     tooltipCaretSize : 0,
     tooltipTemplate : "<%= value %>"
 });

Kod di atas tidak berfungsi...

Saya perlukan sesuatu seperti ini:

P粉578343994
P粉578343994

membalas semua(2)
P粉803527801

Jika anda ingin memaparkan teks berpusat untuk setiap elemen, terdapat cara yang lebih mudah:

Chart.helpers.each(meta.data.forEach(function (bar, index) {
    var centerPoint = bar.getCenterPoint();
    ctx.fillText(dataset.data[index], centerPoint.x, centerPoint.y));
}),this)

Nampaknya 'getCenterPoint' tidak tersedia dalam versi 2.1.3 (yang anda gunakan dalam contoh anda). Saya mencubanya dengan 2.5.0 dan ia berkesan

P粉362071992

Tambahkan kod ini pada objek pilihan anda:

animation: {
  onComplete: function () {
    var chartInstance = this.chart;
    var ctx = chartInstance.ctx;
    console.log(chartInstance);
    var height = chartInstance.controller.boxes[0].bottom;
    ctx.textAlign = "center";
    Chart.helpers.each(this.data.datasets.forEach(function (dataset, i) {
      var meta = chartInstance.controller.getDatasetMeta(i);
      Chart.helpers.each(meta.data.forEach(function (bar, index) {
        ctx.fillText(dataset.data[index], bar._model.x, height - ((height - bar._model.y) / 2));
      }),this)
    }),this);
  }
}

https://jsfiddle.net/h4p8f5xL/

Kemas kini 2

Lilingi kanvas dengan bekas dengan lebar dan ketinggian yang diingini

<div style="width: 100%; height: 500px">
    <canvas id="myChart" width="400" height="400"></canvas>
</div>

Dan tambahkan yang berikut pada objek pilihan anda

// Boolean - whether or not the chart should be responsive and resize when the browser does.
responsive: true,
// Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
maintainAspectRatio: false,
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!