В настоящее время я рисую список чисел (ось y) по списку названий (по оси x). Каждый номер может соответствовать нескольким веб-сайтам. Прямо сейчас я использую функцию увеличения, предоставляемую d3, для сортировки. В настоящее время у меня есть раскрывающееся меню, в котором я могу выбрать номер или название, и каждый вариант индивидуально сортируется по соответствующему выбору. Однако мне было интересно, есть ли способ, чтобы я мог сортировать по алфавиту по названию, а затем сохранять его в алфавитном порядке, а также сортировать по числу. На данный момент я могу только сделать то или другое.d3.js сортировка по обеим осям
Пример: Мои данные сохраняются в формате CSV, как это:
"id","name"
1,"youtube"
1,"google"
2,"google"
3,"nike"
4,"google"
Затем я использую
d3.csv("csvTestFile.csv", function (dataset)
прочитать в файле, и я преобразовать номер документа к Интс.
Для сортировки я сделать следующее:
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)});
Обе эти работы должным образом, однако я хотел бы сортировать по идентификатору, а затем также сортировать по имени. Таким образом, ось будет отображать (начиная с начала координат) 1, 2, 3, 4 по оси y и google, nike, youtube вниз по оси x. Прямо сейчас, если я попытаюсь отсортировать его, это будет 1, 2, 3, 4 до оси y и youtube, google, по оси x OR google, youtube, по оси x с 1, 2 , 4, 3 по оси y.
То, что я хочу, - это 1, 2, 3, 4 по оси Y (отсортировано по цифре) и google, nike, youtube по оси x (отсортировано по алфавиту) одновременно. Учитывая, что это диаграмма рассеяния, это должно быть что-то вроде перестановки тиков на оси, но я не совсем уверен, как это сделать.
Можете ли вы привести пример кода, который у вас есть? В основном вам просто нужно изменить функцию сортировки в соответствии с тем, что вы хотите. –
Я добавил намного больше деталей. Любая помощь будет оценена! – Andrew
Спасибо Кристофер Чиче за редактирование! – Andrew