首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CanvaJs:给定数组中的前10个(排序的)元素

CanvaJs:给定数组中的前10个(排序的)元素
EN

Stack Overflow用户
提问于 2020-11-26 17:09:58
回答 1查看 46关注 0票数 0

所以这就是我的问题。

我有一个带有条形图的图表(顶部的图表),我有一个巨大的元素列表,它是未排序的。我的目标是将元素列表提供给将要对其进行排序的图表,并只给我前10个元素(已排序)。

这是一个代码摘要:

代码语言:javascript
复制
Array = [[User 1, 25],[User 2, 45],[User 3, 11],etc...]

我尝试在Axis X上设置最大值,如下所示:

代码语言:javascript
复制
 var chart_top_user = new CanvasJS.Chart("chartContainer_top_user", {
            animationEnabled: true,
            axisX:{
                maximum: 10,
                interval: 1
            },

但它只显示给定的前10个元素(未排序)。有没有人能告诉我使用Canvajs是否可以做到这一点,或者我必须自己对列表进行排序和限制吗?

对不起,我的英语不好。我试着尽可能的完整。

感谢大家抽出时间来:-)

EN

回答 1

Stack Overflow用户

发布于 2020-12-02 15:14:29

CanvasJS不会对您传递给它的数据点进行排序,它只是按照您传递的顺序进行呈现。在传递给图表选项之前,您可以对其进行排序并仅获取前10个用户。看看下面的一个例子。

代码语言:javascript
复制
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;
}
代码语言:javascript
复制
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
<div id="chartContainer" style="height: 180px; width: 100%;"></div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65018983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档