我有一个图表,我希望按照以下顺序显示沿x轴的列:
start of 2013, end of 2013, 2014, 2015, 2016
问题是我使用(in this Plunker)的代码会按升序对列进行排序,如下所示:
2014, 2015, 2016, end of 2013, start of 2013
这样做的代码就是:
var d_sequence = sequenceSet.values().sort(d3.ascending);
var d_categories = categorySet.values().sort(d3.ascending);
// output sequence and categories for debugging
console.log(" data sequence: " + d_sequence);
if (sequence) {
console.log("input sequence: " + sequence);
} else {
sequence = d_sequence;
}
我想有一些方法可以说,"根据以下数组"中的顺序对列进行排序,然后定义:
[start of 2013, end of 2013, 2014, 2015, 2016]
或许还有一些其他方式可以调整或搭载d3.ascending
的逻辑。但我不知道如何实际做到这一点。有人可以使用this Plunker进行演示吗?
答案 0 :(得分:3)
如果您有一个数组来定义排序顺序......
var desiredOrder = ["start of 2013", "end of 2013", "2014", "2015", "2016"];
...只需在indexOf
函数中使用sort
:
var d_sequence = sequenceSet.values().sort(function(a,b){
return desiredOrder.indexOf(a) - desiredOrder.indexOf(b)
});
以下是更新的plunker:http://plnkr.co/edit/k09pL2VingV7Ipmwbqh3?p=preview