Я пытаюсь понять некоторые концепции D3, но чувствую, что в моих знаниях есть некоторые основные недостатки. Это кажется, как работает функция D3 stack().D3.js Stacked Bar Chart Выбирает
Я пытаюсь понять, почему следующие два фрагмента кода: не эквивалент. Первый работает и заполняет данные, второй - нет.
Первый (рабочий код, упрощенный):
var mainStack = d3.stack().keys(keys);
var seriesData = mainStack(dataset[0]);
gBars = g.selectAll("g")
.data(seriesData, function (d, i) { return (i); })
.enter().append("g").. more work here
Второй (не работает, упрощенный):
var mainStack = d3.stack().keys(keys);
var seriesData = mainStack(dataset[0]);
gBars = g.selectAll("g")
.data(seriesData, function (d, i) { return (i); });
gBars.enter().append("g").. more work here
В принципе, я просто пытался разбить код, чтобы сделать его проще (для меня), чтобы читать, а также разрешить мне реализовать функцию exit(). Однако, когда я делаю это, графики не отображаются.
Я думал, что переменные gBar должны сохранять свои предыдущие выборки?
Любая помощь была бы оценена, я успешно использовал этот шаблон для простых диаграмм, следовательно, мое подозрение, что это связано с тем, что мне не хватает, когда задействована функция d3.stacked(), которая влагает данные?
Вы оставили в своем вопросе критический код: как используется 'gBars' после вашего' ... '? Что такое «больше работы здесь»? Это важная часть! – Mark
Привет, это просто добавление нескольких атрибутов к избранным элементам. например: .apprend ("g"). attr ("fill", "# ff0000") <- Я оставил его, так как я не делал никаких специальных функций. gBars не используется после этого, я просто использую его таким образом, чтобы «учиться» и поиграть с несколькими вещами. –