Обработка некорректных данных
Эта страница описывает, как Vega-Lite обрабатывает null и NaN на непрерывных шкалах. Основные настройки — mark.invalid и config.scale.invalid. Для особых случаев можно использовать условное кодирование, слои и преобразования данных.
Значения null и NaN на категориальных шкалах и в текстовых каналах не считаются некорректными: категориальная шкала может выделить для них отдельные категории, а текстовый канал — показать их напрямую.
Содержание страницы
Режим mark.invalid
Свойство mark.invalid задаёт, как графический примитив и его шкалы обрабатывают null и NaN на непрерывных шкалах. Значение по умолчанию для всех примитивов можно установить в config.mark.invalid.
| Свойство | Тип | Описание |
|---|---|---|
invalid |
MarkInvalidDataMode, null | Режим обработки некорректных данных: определяет, как примитивы и соответствующие шкалы представляют null и NaN в непрерывных шкалах, для которых не задано выходное значение для некорректных данных.• "filter" — исключает все некорректные значения из примитивов и шкал. Для линий, областей и trail соединяет допустимые точки, как если бы некорректных строк данных не было.• "break-paths-filter-domains" — разрывает линии, области и trail на некорректных значениях. Для остальных примитивов равнозначен "filter". Все области данных шкал исключают отфильтрованные точки.• "break-paths-show-domains" — разрывает пути на некорректных значениях; для остальных примитивов скрывает такие значения. Области данных всех шкал включают эти отфильтрованные точки.• "show" или null — показывает все точки в примитивах и областях данных шкал. Каждая шкала использует выходное значение из config.scale.invalid; если оно не задано, некорректные значения получают тот же вид, что ноль (если шкала включает ноль), или минимальное значение (если не включает).• "break-paths-show-path-domains" (по умолчанию) — равнозначен "break-paths-show-domains" для линий, областей и trail, а для остальных примитивов — "filter".Примечание: если в config.scale.invalid задан выход для некорректных значений шкалы канала, все значения этой шкалы считаются допустимыми, поскольку могут дать определённый результат. Поля таких каналов не фильтруются и не вызывают разрывы путей. |
Сравнение режимов
Следующие диаграммы используют набор данных с пропусками по обоим полям:
[
{"a": null, "b": 100},
{"a": -10, "b": null},
{"a": -5, "b": -25},
{"a": -1, "b": -20},
{"a": 0, "b": null},
{"a": 1, "b": 30},
{"a": 5, "b": 40},
{"a": 10, "b": null}
]
Поле a назначено оси X как количественное или порядковое, поле b — оси Y.
"filter"
Режим filter исключает все некорректные значения из примитивов и шкал. Для линий, областей и trail он соединяет корректные точки, как если бы записей с некорректными значениями не существовало:
"break-paths-filter-domains"
Пути линий, областей и trail разрываются в местах некорректных значений. Для остальных примитивов режим эквивалентен filter. Все области значений шкал исключают отфильтрованные точки:
"break-paths-show-domains"
Линия также прерывается, но области определения шкал учитывают все записи:
"show"
Все записи участвуют в построении. Положение некорректных значений задаёт шкала или config.scale.invalid:
"break-paths-show-path-domains" — режим по умолчанию
По историческим причинам этот режим используется по умолчанию, чтобы избежать несовместимых изменений. Для линий, областей и trail он эквивалентен break-paths-show-domains, а для остальных примитивов — filter:
Результат шкалы для некорректных значений
Используйте config.scale.invalid, чтобы задавать выходные значения шкал для некорректных данных отдельно по каналам.
| Свойство | Тип | Описание |
|---|---|---|
invalid |
ScaleInvalidDataConfig | Объект выходных значений шкал для некорректных данных (null и NaN на непрерывной шкале). Ключи — каналы шкал. Значения — "zero-or-min" (использовать ноль, если он включён в шкалу, иначе минимум) или определение {value: ...}.Например, config.scale.invalid: {color: {value: "#aaa"}} окрашивает все некорректные значения цветом #aaa.Подробнее — в документации некорректных данных. |
Цвет и размер при режиме "filter"
Даже при "filter" записи с пропусками в каналах цвета и размера могут остаться на графике, если для этих каналов задан config.scale.invalid:
Сравните с той же диаграммой без config.scale.invalid:
Цвет при режиме "show"
Без явной настройки некорректные значения получают видимое значение нуля или минимума шкалы:
Через config.scale.invalid можно назначить им другое значение:
Другие способы обработки
Настройки mark.invalid и config.scale.invalid меняют отображение некорректных данных, не изменяя сами записи или набор примитивов. Для дополнительных сценариев подходят условное кодирование, несколько слоёв и оконные преобразования.
Условное кодирование
Если основной канал цвета свободен, условие может выделить некорректные записи, например серым цветом:
Слои
Другой графический примитив, например столбец, может отдельно показывать записи со значением null:
Оконное преобразование
Оконное преобразование может восстановить отсутствующие значения до построения графика: