在图表中更改图例文字JS引起问题
我正在尝试缩短图表传奇,因此我使用 beforerender
插件来更改传奇文本。但是,一旦绘制了图表,它似乎会保留原始标签的尺寸(请参见下面的摘要,传奇被偏移到左侧而不是中间,如果单击橙色,则可以切换一个早期的项目之一)。
如果我尝试 beforedraw
,并且如果我使用 或 beforelayout
,则会发生同样的情况,则似乎还没有创建传奇。
有什么方法可以获取图表以用新文本重新绘制传奇?或更改传说文本以使其正确呈现?
var ctx = document.getElementById("canvas").getContext("2d");
window.myBar = new Chart(ctx, {
type: 'pie',
data: {
labels: ['red - some other text that appears after', 'blue - some other text that appears after', 'green - some other text that appears after', 'orange - some other text that appears after'],
datasets: [{
data: [4, 2, 10, 3],
backgroundColor: ['red', 'blue', 'green', 'orange'],
}],
},
options: {
responsive: true,
},
plugins: [{
beforeRender: chart => {
chart.legend.legendItems.forEach(label => {
const labelParts = label.text.split(' - ');
const newLabel = label;
newLabel.text = labelParts[0];
return newLabel;
});
},
}],
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.bundle.js"></script>
<div style="width: 100%">
<canvas id="canvas"></canvas>
</div>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
更好的方法是使用自定义这样的功能:
A better approach would be to use a custom generateLabels function like so: