Mencari bantuan: Cara memaparkan label data secara kekal pada carta yang konsisten dengan kedudukannya
P粉302160436
2023-08-15 23:21:18
<p>Saya mahu memaparkan label data ini secara kekal pada carta supaya ia sentiasa kelihatan, bukan hanya pada tetikus. Bolehkah sesiapa membantu saya? [Ini adalah contoh, serupa dengan yang ini] Saya juga meletakkan kod saya.
(https://i.stack.imgur.com/TY8X1.png)</p>
<pre class="brush:php;toolbar:false;"><!DOCTYPE html>
<kepala>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0">contoh carta pai</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<badan>
<div style="position: relative;">
<canvas id="pieChart" width="400" height="400"></canvas>
</div>
<skrip>
// Dapatkan elemen kanvas
var canvas = document.getElementById('PieChart');
//Buat carta pai
var pieChart = Carta baharu(kanvas, {
jenis: 'pai',
data: {
label: ['dalam talian', 'luar talian'],
set data: [{
data: [8, 2],
Warna latar belakang: ['rgba(71, 190, 125, 1)', 'rgba(241, 65, 108, 1)'],
Lebar sempadan: 0
}]
},
pilihan: {
responsif: benar,
maintainAspectNisbah: palsu,
pemalam: {
lagenda: {
paparan: palsu
},
label data: {
warna: '#fff',
sauh: 'akhir', // Kedudukan label data (mula, tengah, akhir)
jajar: 'tamat', // penjajaran teks (mula, tengah, tamat)
offset: 10, // offset antara label dan carta
pemformat: (nilai, ctx) =>
biarkan label = ctx.chart.data.labels[ctx.dataIndex];
kembalikan label + ': ' + nilai + '%';
}
}
}
}
});
</skrip>
</badan>
</html></pre>
<p><br /></p>
Saya menambah bekas berasingan untuk label dan menggayakannya agar sepadan dengan warna carta. Saya menggunakan flexbox untuk meletakkan label di sebelah kiri carta. Fungsi positionLabelsContainer() meletakkan bekas label berdasarkan saiz carta dan menambah pendengar acara untuk meletakkan semula apabila tetingkap diubah saiz.