Вы можете сделать это с двумя поддельными группами, одна для удаления пустых графиков ячеек, а другая для получения последних N элементов полученных данных.
Удаление пустых графиков ячеек:
function remove_empty_array_bins(group) {
return {
all: function() {
return group.all().filter(d => d.value.length);
}
};
}
Это просто фильтрует ячейки, удаляя все, где массив .value
имеет длину 0.
Принимая последние N элементов:
function cap_group(group, N) {
return {
all: function() {
var all = group.all();
return all.slice(all.length - N);
}
};
}
По сути, это то, что cap смешивает делает, кроме как без создания корзины для «других» (что несколько сложно).
Мы извлекаем данные из исходной группы, смотрим, сколько это времени, а затем нарезаем этот массив от all.length - N
до конца.
Цепочка этих подделок вместе при передаче их на график:
chart
.group(cap_group(remove_empty_array_bins(closeGroup), 5))
Я использую 5 вместо 10, потому что у меня есть набор данных меньшего размера для работы.
Демонстрационная скрипка .
В этом примере используется «реальный» масштаб времени, а не порядковые даты. Есть несколько способов сделать порядковые даты, но если ваша группа все еще отсортирована от низких до высоких дат, это все равно должно работать.
Если нет, вам придется отредактировать свой вопрос, чтобы включить пример код, который вы используете для генерации порядковой группы дат.