Ich suche Hilfe: So zeigen Sie Datenbeschriftungen in einem Diagramm dauerhaft entsprechend ihrer Position an
P粉302160436
2023-08-15 23:21:18
<p>Ich möchte diese Datenbeschriftungen dauerhaft im Diagramm anzeigen, damit sie immer sichtbar sind, nicht nur beim Mouseover. Kann mir jemand helfen? [Hier ist ein Beispiel, ähnlich wie dieses] Ich habe auch meinen Code abgelegt.
(https://i.stack.imgur.com/TY8X1.png)</p>
<pre class="brush:php;toolbar:false;"><!DOCTYPE html>html lang="en">
<Kopf>
<meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Beispiel für ein Kreisdiagramm</title>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<Körper>
<div style="position: relative;">
<canvas id="pieChart" width="400" height="400"></canvas>
</div>
<script>
// Holen Sie sich das Canvas-Element
var canvas = document.getElementById('pieChart');
//Erstellen Sie ein Kreisdiagramm
var pieChart = new Chart(canvas, {
Typ: 'Kuchen',
Daten: {
Etiketten: ['online', 'offline'],
Datensätze: [{
Daten: [8, 2],
Hintergrundfarbe: ['rgba(71, 190, 125, 1)', 'rgba(241, 65, 108, 1)'],
borderWidth: 0
}]
},
Optionen: {
reaktionsfähig: wahr,
keepAspectRatio: false,
Plugins: {
Legende: {
Anzeige: falsch
},
Datenaufkleber: {
Farbe: '#fff',
Anker: 'Ende', //Die Position der Datenbeschriftung (Anfang, Mitte, Ende)
align: 'end', // Textausrichtung (Start, Mitte, Ende)
Offset: 10, // Offset zwischen Beschriftung und Diagramm
Formatierer: (Wert, ctx) =>
let label = ctx.chart.data.labels[ctx.dataIndex];
return label + ': ' + value + '%';
}
}
}
}
});
</script>
</body>
</html></pre>
<p><br /></p>
我为标签添加了一个独立的容器,并将其样式设置为与图表颜色相匹配。我使用flexbox将标签定位在图表的左侧。positionLabelsContainer()函数根据图表大小定位标签容器,并添加了一个事件监听器以在窗口调整大小时重新定位。