#javascript #canvasjs
#javascript #canvasjs
Вопрос:
Итак, это моя проблема.
У меня есть диаграмма с столбцами (верхняя диаграмма), и у меня есть огромный список элементов, который не отсортирован. Моя цель — предоставить список элементов диаграмме, которая будет его сортировать, и предоставить мне только первые 10 элементов (отсортированных).
И это краткое изложение кода:
Array = [[User 1, 25],[User 2, 45],[User 3, 11],etc...]
Я попытался установить максимум на Axis X
подобном:
var chart_top_user = new CanvasJS.Chart("chartContainer_top_user", {
animationEnabled: true,
axisX:{
maximum: 10,
interval: 1
},
Но он показывает только первые 10 заданных элементов (несортированных). Может кто-нибудь сказать мне, возможно ли это с Canvajs
помощью, или я должен сам сортировать и ограничивать список?
Извините за мой плохой английский. Я старался быть как можно более полным.
Спасибо всем за ваше время 🙂
Ответ №1:
CanvasJS не сортирует точки данных, которые вы ему передаете, он просто отображает в последовательности, которую вы передаете. Вы можете отсортировать его и получить только 10 лучших пользователей, прежде чем переходить к параметрам диаграммы. Проверьте пример ниже.
var dps = [
{ label: "User 1", y: 610 },
{ label: "User 2", y: 680 },
{ label: "User 3", y: 690 },
{ label: "User 4", y: 700 },
{ label: "User 5", y: 710 },
{ label: "User 6", y: 658 },
{ label: "User 7", y: 734 },
{ label: "User 8", y: 963 },
{ label: "User 9", y: 847 },
{ label: "User 10", y: 853 },
{ label: "User 11", y: 869 },
{ label: "User 12", y: 943 },
{ label: "User 13", y: 970 },
{ label: "User 14", y: 869 },
{ label: "User 15", y: 890 },
{ label: "User 16", y: 930 },
{ label: "User 17", y: 850 },
{ label: "User 18", y: 905 },
{ label: "User 19", y: 980 },
{ label: "User 20", y: 858 },
{ label: "User 21", y: 734 },
{ label: "User 22", y: 963 },
{ label: "User 23", y: 847 },
{ label: "User 24", y: 853 },
{ label: "User 25", y: 869 },
{ label: "User 26", y: 943 },
{ label: "User 27", y: 970 },
{ label: "User 28", y: 869 },
{ label: "User 29", y: 890 },
{ label: "User 30", y: 930 },
{ label: "User 31", y: 750 }
];
var top10Dps = getHighestValues(dps, 10);
//var top10Dps = dps;
var chart = new CanvasJS.Chart("chartContainer", {
animationEnabled: true,
title:{
text: "Website Traffic"
},
axisY: {
//includeZero: true
},
data: [{
type: "line",
dataPoints: top10Dps
}]
});
chart.render();
function getHighestValues(dps, num){
var topDps = [...dps].sort((a, b) => b.y - a.y).slice(0, num);
return topDps;
}
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 180px; width: 100%;"></div>