我目前正在根据标题列表(x 轴)绘制数字列表(y 轴)。每个数字可以对应多个网站。现在我一直在使用 d3 提供的升序函数对它们进行排序。我目前有一个下拉菜单,我可以在其中选择数字或标题,每个选项都按各自的选择单独排序。但是,我想知道是否有一种方法可以按标题的字母顺序排序,然后保持字母顺序,也可以按数字排序。到目前为止,我只能做一个或另一个。
示例:我的数据存储在 CSV 中,如下所示:
"id","name"
1,"youtube"
1,"google"
2,"google"
3,"nike"
4,"google"
然后我用
d3.csv("csvTestFile.csv", function (dataset)
读入文件,我将 id 号转换为整数。
要排序,我执行以下操作:
data.sort(function(a, b) { return d3.ascending(a.id, b.id)});
按 ID 排序。要按名称排序,我这样做:
data.sort(function(a, b) { return d3.ascending(a.name, b.name)});
这两个都可以正常工作,但是我想先按 ID 排序,然后再按名称排序。所以轴将显示(从原点开始)1、2、3、4 在 y 轴上,google、nike、youtube 在 x 轴下。现在,如果我尝试对其进行排序,它将是 1、2、3、4 到 y 轴和 youtube、google、nike 在 x 轴上或 google、youtube、nike 在 x 轴下用 1、2 , 4, 3 在 y 轴上。
我想要的是 1、2、3、4 在 y 轴上(按数字排序)和 google、nike、youtube 同时在 x 轴下(按字母顺序排序)。鉴于这是一个散点图,它应该只是重新排列轴上的刻度,但我不太确定如何去做。