gpt4 book ai didi

javascript - onClick 事件隐藏数据集 Chart.js V2

转载 作者:搜寻专家 更新时间:2023-10-31 08:15:23 24 4
gpt4 key购买 nike

如何从 Chart.js 制作一个 html 图例来隐藏/显示图表的 dataset,就像 Chart.js 生成的图例 本身

enter image description here

底部图例 -> Chart.js 图例

右边的图例-> HTML

我如何点击“SETOR AGILIZA”并获取与其相关的数据集隐藏/显示

我在 chat.js/core.legend.js 中找到了这段代码 core.legend

onClick: function(e, legendItem) {
var index = legendItem.datasetIndex;
var ci = this.chart;
var meta = ci.getDatasetMeta(index);

// See controller.isDatasetVisible comment
meta.hidden = meta.hidden === null? !ci.data.datasets[index].hidden : null;

// We hid a dataset ... rerender the chart
ci.update();
},

但我不知道如何让它在 html 图例中的 onClick 事件上工作

标签名称是从数据库中获取的,因此它们可以更改。

更新 1

找到这个 Github , 努力让它发挥作用

最佳答案

所以,我在这个 Post 之后做对了

这是帖子的代码

var weightChartOptions = {
responsive: true,
legendCallback: function(chart) {
console.log(chart);
var legendHtml = [];
legendHtml.push('<table>');
legendHtml.push('<tr>');
for (var i=0; i<chart.data.datasets.length; i++) {
legendHtml.push('<td><div class="chart-legend" style="background-color:' + chart.data.datasets[i].backgroundColor + '"></div></td>');
if (chart.data.datasets[i].label) {
legendHtml.push('<td class="chart-legend-label-text" onclick="updateDataset(event, ' + '\'' + chart.legend.legendItems[i].datasetIndex + '\'' + ')">' + chart.data.datasets[i].label + '</td>');
}
}
legendHtml.push('</tr>');
legendHtml.push('</table>');
return legendHtml.join("");
},
legend: {
display: false
}
};

// Show/hide chart by click legend
updateDataset = function(e, datasetIndex) {
var index = datasetIndex;
var ci = e.view.weightChart;
var meta = ci.getDatasetMeta(index);

// See controller.isDatasetVisible comment
meta.hidden = meta.hidden === null? !ci.data.datasets[index].hidden : null;

// We hid a dataset ... rerender the chart
ci.update();
};

var ctx = document.getElementById("weightChart").getContext("2d");
window.weightChart = new Chart(ctx, {
type: 'line',
data: weightChartData,
options: weightChartOptions
});
document.getElementById("weightChartLegend").innerHTML = weightChart.generateLegend();
};

这里的 secret 是第 3 行中的 legendCallback

在这个例子中他使用折线图,在我的例子中我使用条形图

所以我为列表标签更改了表格标签,这样效果更好

他强调在获取"= new Chart"的变量前加上"window"

window.weightChart = new Chart(ctx, {.....

然后通过一些 CSS,您可以获得带有隐藏/显示选项的漂亮图例

关于javascript - onClick 事件隐藏数据集 Chart.js V2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com