d3.js Изменение порядка столбцов данных для графика

Я пытался некоторое время, но я не уверен, какое ключевое слово мне нужно искать. В любом случае, меня интересует изменение способа загрузки данных в d3, чтобы я мог переставлять столбцы на графиках. В терминах R то, что я ищу, будет примерно эквивалентно изменению уровней факторов, чтобы можно было переставить столбцы в гистограмме.

Например, в ссылке на блок ниже, я хочу вручную установить порядок параллельных координат. В настоящее время он показывает экономию, цилиндры, чтобы год слева направо. Я хочу сделать что-то вроде года, веса, смещения и т. Д.

https://bl.ocks.org/jasondavies/1341281

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

И т.д... Я не хотел, чтобы это расширялось слишком сильно...

Другие вопросы по тегам