Chart.js3-我有一个圆环图,其中有一个图例,该图例带有一个generateLabels
函数,该函数可以根据图形颜色更改文本颜色。
plugins: {
legend: {
labels: {
generateLabels: (chart) => {
if (chart.data.labels.length && chart.data.datasets.length) {
return chart.data.labels.map((label, i) => ({
text: label,
fontColor: chart.data.datasets[0].backgroundColor[i],
fillStyle: chart.data.datasets[0].backgroundColor[i],
strokeStyle: '#fff',
hidden: myChart ? myChart.getDatasetMeta(0).data[i].hidden : false
}));
}
},
},
然而,我需要图表更新,就像它使用它的默认行为,并折叠图表中的数据,如果图例项是“隐藏”。我可以手动完成,但它与硬编码值:
...
onClick: (event, legendItem) => {
const metaData = myChart.getDatasetMeta(0).data;
const iData = labs.indexOf(legendItem.text);
metaData[iData].hidden ? myChart.datasets[0].data[iData] = 0 :
myChart.data.datasets[0].data[iData] = 1;
metaData[iData].hidden = !metaData[iData].hidden;
myChart.update();
},
当图例项带有删除线且处于“隐藏”状态时,如何获得图表更新的原始行为?
1条答案
按热度按时间lymnna711#
我知道这是晚了,但我希望这也将有助于其他开发人员。
我也遇到过这个问题,我发现每次您尝试单击图例时,
generateLabels
的回调也会执行。因此,您需要在第一次生成之后使用图表的现有
legendItems
,以避免覆盖属性。