Si può provare questo
Creare serbo per i set di dati nascosti
window.chartName = new Chart(...
window.chartName.store = new Array();
quindi utilizzare questa funzione per aggiornare tabella, devono essere manipolati cliccando sulla voce leggenda
function updateDataset(legendLi, chart, label) {
var store = chart.store;
var exists = false;
for (var i = 0; i < store.length; i++) {
if (store[i][0] === label) {
exists = true;
chart.datasets.push(store.splice(i, 1)[0][1]);
legendLi.fadeTo("slow", 1);
}
}
if (!exists) {
for (var i = 0; i < chart.datasets.length; i++) {
if (chart.datasets[i].label === label) {
chart.store.push([label, chart.datasets.splice(i, 1)[0]]);
legendLi.fadeTo("slow", 0.33);
}
}
}
chart.update();
}
non dimenticate aggiornati modello di legenda nelle opzioni del grafico
legendTemplate : "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li class=\"legend-item\" onclick=\"updateDataset($(this), window.chartName, '<%=datasets[i].label%>')\"><span style=\"background-color:<%=datasets[i].strokeColor%>\"></span><%if(datasets[i].label){%><%=datasets[i].label%><%}%></li><%}%></ul>"
Poco, ho aggiunto questo gestore onclick per il componente li
<li class=\"legend-item\" onclick=\"updateDataset($(this), window.chartName , '<%=datasets[i].label%>')\"><
Per esempio fiddle
Basta ridisegnare il grafico senza quella serie? – Pointy
@Pointy Mi chiedevo se esistesse un modo più semplice, autonomo e più automatico per farlo. In questo modo devo allegare dinamicamente un evento agli elementi della legenda, escludere o includere serie e ridisegno. Con molti grafici questo va rapidamente verso il caos, imo, ma grazie comunque. – pomarc
Beh, per quanto posso dire, Chart.js in particolare non ha molta sofisticazione sul supporto delle interazioni. – Pointy