Rumah > Soal Jawab > teks badan
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粉8035278012023-10-24 13:35:12
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粉3620719922023-10-24 11:28:29
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,