Javascript 可替代d3.升序或d3.降序,以达到所需的顺序
我有一个图表,其中的列沿x轴按以下顺序显示:Javascript 可替代d3.升序或d3.降序,以达到所需的顺序,javascript,d3.js,Javascript,D3.js,我有一个图表,其中的列沿x轴按以下顺序显示: 2013年初、2013年底、2014年、2015年、2016年 问题是我使用的代码()将按升序对列进行排序,如下所示: 2014、2015、2016、2013年底、2013年初 使其这样做的代码如下: var d_sequence = sequenceSet.values().sort(d3.ascending); var d_categories = categorySet.values().sort(d3.ascending);
2013年初、2013年底、2014年、2015年、2016年
问题是我使用的代码()将按升序对列进行排序,如下所示:
2014、2015、2016、2013年底、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;
}
我的问题是:如何修改这段代码,使其对列进行如下排序?
我想可以这样说,“根据以下数组中的顺序对列进行排序”,然后定义:
[2013年初、2013年底、2014年、2015年、2016年]
或者,也许有其他方法可以调整或利用d3.ascending的逻辑。但我不知道该怎么做。如果您有一个数组来定义排序顺序,是否有人可以用?进行演示
var desiredOrder = ["start of 2013", "end of 2013", "2014", "2015", "2016"];
。。。只需在sort
功能中使用indexOf
:
var d_sequence = sequenceSet.values().sort(function(a,b){
return desiredOrder.indexOf(a) - desiredOrder.indexOf(b)
});
以下是更新的plunker: