Amcharts和弦图按特定值对节点进行排序。

问题描述 投票:0回答:1

我正在使用amcharts库创建一个(非ribbon)和弦图,我想知道是否有一种方法可以给存储在数据集中的特定值的节点排序。

我正在寻找的是,如果我们有这样的数据集。

data = [
    {"from": A, "number": 3},
    {"from": B, "number": 1},
    {"from": C, "number": 2},
    {"from": A, "to": C, "value": 1},
    {"from": B, "to": A, "value": 1},
    {"from": B, "to": C, "value": 1},
]

那么,节点可以根据以下情况进行排序 number 所以在这个例子中,我们有B > C > A。

根据我在API和文档中看到的内容,我发现我们可以用 chart.sortBydefault 将根据节点在数据集中出现的顺序进行排序,这里是A>B>C)。name (以 FromName 节点的数据域属性,按字母顺序排列,这里也有A>B>C)或 value (以总数排序) value 节点的datafield属性,即从这个节点出去的所有加权链接的总和,这里是B>A>C)。但是,除了这3个属性,我找不到其他的东西......。

你知道是否有一种方法,可以让一个个性化的 sort 对节点进行排序?

javascript amcharts
1个回答
0
投票

解决方案,正如@norbitrial所建议的那样,是对数据集进行排序。number 的默认选项之前,使用 sortBy 的数据集上。这是我用来对数据集进行排序的代码(虽然可能不是最理想的,但至少它是有效的!)。

data.sort(function(x, y) {
  if ("number" in x && !("number" in y)) {
    return -1;
  } else if ("number" in y && !("number" in x)) {
    return 1;
  }
  if (x["number"] < y["number"]) {
    return -1;
  }else if (x["number"] > y["number"]) {
    return 1;
  }
  return 0;
})
© www.soinside.com 2019 - 2024. All rights reserved.