gpt4 book ai didi

javascript - 在chart.js中组合多个图例元素

转载 作者:行者123 更新时间:2023-12-04 16:41:53 25 4
gpt4 key购买 nike

我正在尝试将置信区间添加到 chart.js 中的时间序列图中。目前我绘制了三个数据集并使用了填充选项。这意味着我最终在图例中得到了 3 个元素,所有这些元素都可以独立切换(图 1)。

我想要做的是将三个图例元素组合成一个对象,该对象将同时切换所有三个数据集,例如就像图 2 中的模型一样。[或者以单个数据集绘制所有三行的方式来构建我的数据]。

编辑 :这是我目前如何实现情节的最小工作示例 -
https://jsfiddle.net/r491ge8z/7/

在此示例中,我想要一个切换所有三个数据集的图例元素。

var chartData = {
labels: [1, 2, 3, 4, 5],
datasets: [
{
label: "Set 1",
backgroundColor: 'rgba(55, 173, 221, 0.6)',
data: [8, 18, 48, 38, 28],
borderWidth: 0.1,
fill: false,
pointRadius: 0.0,
},

{
label: "Set 1",
backgroundColor: 'rgba(55, 173, 221, 1)',
data: [10, 20, 50, 40, 30],
borderColor: "#00F",
fill: false,
pointRadius: 0.0,
},

{
label: "Set 1",
backgroundColor: 'rgba(55, 173, 221, 0.6)',
data: [12, 22, 52, 42, 32],
borderWidth: 0.1,
fill: '-2',
pointRadius: 0.0,
},

]
};

var chartOptions = {
responsive: true,
title: {
display: true,
text: 'Bad Confidence Intervals'
},
};

var chartDemo = new Chart($('#demo').get(0), {
type: 'line',
data: chartData,
options: chartOptions
});

Triple legend
Mock-Up

最佳答案

我通过将以下内容添加到图表选项来解决如何做到这一点 -
[假设您的置信区间命名为 xxx_lo , xxx , xxx_hi并出现在chartData以该顺序]

jsfiddle 示例 - https://jsfiddle.net/5fktnv6a/

labels: {
filter: function(item, chart) {
return !item.text.includes('_');
}
},
onClick: function(e, legendItem) { // need to hide index -1 and index +1
let index = legendItem.datasetIndex;
let ci = this.chart;
let alreadyHidden = (ci.getDatasetMeta(index).hidden === null) ? false : ci.getDatasetMeta(index).hidden;
let meta_lo = ci.getDatasetMeta(index - 1);
let meta = ci.getDatasetMeta(index);
let meta_hi = ci.getDatasetMeta(index + 1);
if (!alreadyHidden) {
meta_lo.hidden = true;
meta.hidden = true;
meta_hi.hidden = true;
} else {
meta_lo.hidden = null;
meta.hidden = null;
meta_hi.hidden = null;
}

ci.update();
},

关于javascript - 在chart.js中组合多个图例元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59322507/

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