我有一個來自chart.js的雷達圖表。目前它會加載所有數據,並且支持的圖例通過單擊切換與圖例相關聯的數據的圖例標籤來運行。我希望能夠點擊圖例標籤,然後切換所有其他圖標,並可能引入「全部」選項?這是可以用chart.js嗎?Chart.js更改圖例切換行爲
這裏是我的圖表的外觀現在:
var chartata = {
labels: [
"Strategic Development and Ownership",
"Driving change through others",
"Exec Disposition",
"Commercial Acumen",
"Develops High Performance Teams",
"Innovation and risk taking",
"Global Leadership",
"Industry Leader"
]};
var ctx = $("#allRadarData");
var config = {
type: 'radar',
data: chartata,
animationEasing: 'linear',
options: {
legend: {
fontSize: 10,
display: true,
itemWidth: 150,
position: 'bottom',
fullWidth: true,
labels: {
fontColor: 'rgb(0,0,0)',
boxWidth: 10,
padding: 20
},
},
tooltips: {
enabled: true
},
scale: {
ticks: {
fontSize: 15,
beginAtZero: true,
stepSize: 1,
max: 5
}
}
},
},
LineGraph = new Chart(ctx, config);
var colorArray = [
["#f44336", false],
["#E91E63", false],
["#9C27B0", false],
["#673AB7", false],
['#3F51B5', false],
["#607D8B", false]
];
for (var i in data) {
tmpscore=[];
tmpscore.push(data[i].score1);
tmpscore.push(data[i].score2);
tmpscore.push(data[i].score3);
tmpscore.push(data[i].score4);
tmpscore.push(data[i].score5);
tmpscore.push(data[i].score6);
tmpscore.push(data[i].score7);
tmpscore.push(data[i].score8);
var color, done = false;
while (!done) {
var test = colorArray[parseInt(Math.random() * 10)];
if (!test[1]) {
color = test[0];
colorArray[colorArray.indexOf(test)][1] = true;
done = !done;
}
}
newDataset = {
label: data[i].firstName+' '+data[i].lastName,
borderColor: color,
backgroundColor: "rgba(0,0,0,0)",
data: tmpscore,
};
config.data.datasets.push(newDataset);
}
LineGraph.update();
},
});
});
首先感謝您解釋得很好的答案。我可以看到你明白我的需求。我需要從這個例子中唯一需要的是,當您選擇一個標籤時,它將刪除所有其他標籤並僅顯示所選標籤,如果您繼續點擊另一個標籤,則會添加該標籤,而不是刪除原始點擊的標籤並將其替換與新的點擊。我唱唱chart.js是相當新的,所以它有點混亂。 – PhpDude
啊,好的......我不確定你想怎麼處理這個問題。稍後當我到達計算機時,我會更新我的答案。 – jordanwillis
阿布里爾謝謝。你可以在上面顯示我的代碼嗎? – PhpDude