如何更改 React chartjs-2 图例单击功能以隐藏除单击的以外的所有内容?
How to change React chartjs-2 legend click functionality to hide all except the one clicked?
React Chartjs-2:如何在单击图例时实现功能,而不是隐藏单击的图例,所有其他 legends/datasets 都隐藏?
通过修改图例的onClick函数:
选项:
options: {
plugins: {
legend: {
onClick: newLegendClickHandler
}
}
}
单击时:
var newLegendClickHandler = function (e, legendItem, legend) {
let datasetIndex = legendItem.datasetIndex;
let ci = legend.chart, metaSets = [];
for (let i = 0; i < legend.chart.data.datasets.length; i++) {
metaSets.push(ci.getDatasetMeta(i));
}
metaSets.forEach(function(meta) {
meta.hidden = meta.index === datasetIndex ? false : true;
});
ci.update();
};
有关此主题的更多信息:Legend
A fiddle 看看效果:JSFiddle
编辑:
Chartjs 2 使用几乎相同的方法。
选项:
options: {
legend: {
onClick: newLegendClickHandler
}
}
单击时:
var newLegendClickHandler = function (e, legendItem) {
let datasetIndex = legendItem.datasetIndex;
let ci = this.chart, metaSets = [];
for (let i = 0; i < ci.data.datasets.length; i++) {
metaSets.push(ci.getDatasetMeta(i));
}
metaSets.forEach(function(meta) {
meta.hidden = meta.index === datasetIndex ? false : true;
});
ci.update();
};
另一个Fiddle:2.9.4 Fiddle
编辑 2:
如果您使用的是 chartjs 2.6.0,则需要将 meta.index
更改为 meta.controller.index
React Chartjs-2:如何在单击图例时实现功能,而不是隐藏单击的图例,所有其他 legends/datasets 都隐藏?
通过修改图例的onClick函数:
选项:
options: {
plugins: {
legend: {
onClick: newLegendClickHandler
}
}
}
单击时:
var newLegendClickHandler = function (e, legendItem, legend) {
let datasetIndex = legendItem.datasetIndex;
let ci = legend.chart, metaSets = [];
for (let i = 0; i < legend.chart.data.datasets.length; i++) {
metaSets.push(ci.getDatasetMeta(i));
}
metaSets.forEach(function(meta) {
meta.hidden = meta.index === datasetIndex ? false : true;
});
ci.update();
};
有关此主题的更多信息:Legend
A fiddle 看看效果:JSFiddle
编辑:
Chartjs 2 使用几乎相同的方法。
选项:
options: {
legend: {
onClick: newLegendClickHandler
}
}
单击时:
var newLegendClickHandler = function (e, legendItem) {
let datasetIndex = legendItem.datasetIndex;
let ci = this.chart, metaSets = [];
for (let i = 0; i < ci.data.datasets.length; i++) {
metaSets.push(ci.getDatasetMeta(i));
}
metaSets.forEach(function(meta) {
meta.hidden = meta.index === datasetIndex ? false : true;
});
ci.update();
};
另一个Fiddle:2.9.4 Fiddle
编辑 2:
如果您使用的是 chartjs 2.6.0,则需要将 meta.index
更改为 meta.controller.index