尋求協助:如何在圖表上永久顯示資料標籤並與其位置一致
P粉302160436
2023-08-15 23:21:18
<p>我想在圖表上永久顯示這些資料標籤,以便它們始終可見,而不僅僅在滑鼠懸停時可見。有人可以幫我嗎? [這是一個範例,類似於這個]我也放下了我的程式碼。
(https://i.stack.imgur.com/TY8X1.png)</p>
<pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html lang="en">
<head>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>圓餅圖範例</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<div style="position: relative;">
<canvas id="pieChart" width="400" height="400"></canvas>
</div>
<script>
// 取得canvas元素
var canvas = document.getElementById('pieChart');
// 建立圓餅圖
var pieChart = new Chart(canvas, {
type: 'pie',
data: {
labels: ['線上', '離線'],
datasets: [{
data: [8, 2],
backgroundColor: ['rgba(71, 190, 125, 1)', 'rgba(241, 65, 108, 1)'],
borderWidth: 0
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
},
datalabels: {
color: '#fff',
anchor: 'end', // 資料標籤的位置(start, center, end)
align: 'end', // 文字對齊方式(start, center, end)
offset: 10, // 標籤與圖表的偏移量
formatter: (value, ctx) => {
let label = ctx.chart.data.labels[ctx.dataIndex];
return label ': ' value '%';
}
}
}
}
});
</script>
</body>
</html></pre>
<p><br /></p>
我為標籤新增了一個獨立的容器,並將其樣式設定為與圖表顏色相符。我使用flexbox將標籤定位在圖表的左側。 positionLabelsContainer()函數根據圖表大小定位標籤容器,並新增了事件監聽器以在視窗調整大小時重新定位。