Используя некоторую сложную смесь линейных и ленточных шкал, я веду себя следующим образом:
https://vega.github.io/editor/#/gist/378076f154c10c6d171608c1e82b2e3c/timeline.json
(Возьмитевременная шкала и прокрутка влево или вправо)
Проще просто попробовать, чем объяснить, но здесь ... Я хочу иметь возможность отображать временные метки на линейной полосе в течение ограниченного времени, новместо сокращения временных меток, которые меньше или больше, чем протяженность окна, я хочу, чтобы эти временные метки собирались в экстентах.
Это означает, что, поскольку временные метки собираются в любой степени, мы должны уменьшить окно, чтобыподойдет тем, кто снаружи. Примерно такой алгоритм:
- Найти заданный LT меньше минимального экстента
- Найти заданный GT больше максимального экстента
- Вычислить новое сжатое окно, чтобы учесть временные метки налевый (минимальный) или правый (максимальный) экстенты
Найти набор N между минимальным и максимальным
Построить шкалу диапазона для набора LT
- Построение шкалы диапазонов для набора GT
Построение линейной шкалы для набора N
Кодирование меток каждого набора L, G, M с использованием их соответствующей шкалы
Есть ли что-то более простое в Vega / D3, которое поддерживает это? Как вы можете видеть, я заставил это работать (с несколькими артефактами), но было бы неплохо более простое решение. Возможно, более простое преобразование данных. Я уже делаю 3 преобразования фильтра для шагов 1,2 и 4 выше.