В этом коде: http://bl.ocks.org/mbostock/3886208переплета данные в d3.js
Что такое функция третьего (данные) в
.data(stack.keys(data.columns.slice(1))(data))
В этом коде: http://bl.ocks.org/mbostock/3886208переплета данные в d3.js
Что такое функция третьего (данные) в
.data(stack.keys(data.columns.slice(1))(data))
Эта линия может быть лучше понята, если разбить его и создать какой-то новый переменные, чтобы показать, что происходит.
Во-первых, мы определяем генератор стека с аксессору ключами:
var stack = d3.stack()
.keys(data.columns.slice(1));
Затем мы стек данные (data
здесь соответствует data
в вашем вопросе, что данные штабелирования):
var stackedData = stack(data)
//data being stacked-----^
И мы, наконец, связать данные:
g.selectAll(".serie")
.data(stackedData);
Таким образом, то, что вы назвали третьими цифрами - это просто данные, которые будут сложены. Проблема заключается в том, в коде Бостока, вместо определения ключей сбруи в переменном стеке генератора, как я сделал, и определение сложенных данных в качестве нового переменного ...
var stack = d3.stack()
.keys(data.columns.slice(1));
var stackedData = stack(data);
... он делает все, что в в одном из этапов, внутри функции data()
, которая имеет такой же эффект:
.data(stack.keys(data.columns.slice(1))(data))
// ^---keys accessor ^----data being stacked
спасибо. На данный момент я, вероятно, промежуточный кодер, и некоторые из этих вещей d3 кажутся мне черной магией. это первый раз, когда я видел функцию и переменную рядом друг с другом без запятой, это обычное явление? – eatkimchi
Извините, но где вы видите функцию и переменную рядом друг с другом? –
.data (stack.keys (data.columns.slice (1)) * no comma * (data)) – eatkimchi