d3.js Изменение порядка столбцов данных для графика
Я пытался некоторое время, но я не уверен, какое ключевое слово мне нужно искать. В любом случае, меня интересует изменение способа загрузки данных в d3, чтобы я мог переставлять столбцы на графиках. В терминах R то, что я ищу, будет примерно эквивалентно изменению уровней факторов, чтобы можно было переставить столбцы в гистограмме.
Например, в ссылке на блок ниже, я хочу вручную установить порядок параллельных координат. В настоящее время он показывает экономию, цилиндры, чтобы год слева направо. Я хочу сделать что-то вроде года, веса, смещения и т. Д.
2 ответа
Порядок столбцов определяется d3.keys(cars[0])
в этом фрагменте:
x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
return d != "name" && (y[d] = d3.scale.linear()
.domain(d3.extent(cars, function(p) {
return +p[d];
}))
.range([height, 0]));
}));
Например, здесь тот же код, но с использованием...
d3.keys(cars[0]).sort()
... отсортировать массив по алфавиту: https://bl.ocks.org/anonymous/9fb7329fed0e2ea539bab5bc5a47a16c
Итак, если вы хотите определенный порядок, вы можете просто передать желаемый массив:
x.domain(dimensions = ["year", , "weight (lb)", "name", "displacement (cc)", "economy (mpg)", "cylinders", "power (hp)", "0-60 mph (s)"].filter(function(d) {
return d != "name" && (y[d] = d3.scale.linear()
.domain(d3.extent(cars, function(p) {
return +p[d];
}))
.range([height, 0]));
}));
Вот блоки: https://bl.ocks.org/anonymous/4f1798a5e658df7986f70effa030497c
Для этого вы можете взять файл csv (т.е. cars.csv) и отредактировать его в таблице Excel. Там вы можете транспонировать столбец по своему усмотрению и копировать обратно в вашу функцию d3js. Посмотрите на пример ниже (сделано с Excel):
name,year,weight (lb),displacement (cc),economy (mpg),cylinders,power (hp),0-60 mph (s)
Посол AMC Посол Брогам, 73,321,360,13,8,15,11 Посол DPC, 70,38,30,15,8,190,8,5 Посол AMC SST,72,3672,304,17,8,150,11,5 AMC Concord DL 6,79,3265,232,20.2,6,90,18.2
И т.д... Я не хотел, чтобы это расширялось слишком сильно...