Разбиение на интервалы — Bin
Как и при агрегировании, разбить данные на интервалы в Altair можно двумя способами: непосредственно в кодировании или с помощью преобразования верхнего уровня.
Типичный случай применения bin — построение гистограммы:
import altair as alt
from altair.datasets import data
movies = data.movies.url
alt.Chart(movies).mark_bar().encode(
alt.X("IMDB Rating:Q").bin(),
y='count()',
)
Разбиение на интервалы полезно и в других задачах. Например, здесь непрерывное поле разбивается на интервалы, чтобы получить дискретную цветовую шкалу:
import altair as alt
from altair.datasets import data
cars = data.cars.url
alt.Chart(cars).mark_point().encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color=alt.Color('Acceleration:Q').bin(maxbins=5)
)
В первом случае bin() вызывается без аргументов и использует стандартные настройки. Во втором параметры интервалов задаются точнее с помощью аргумента maxbins.
Если одни и те же интервалы используются в нескольких частях диаграммы, удобнее определить разбиение на верхнем уровне методом Chart.transform_bin.
Вот предыдущая гистограмма, построенная с помощью такого преобразования:
import altair as alt
from altair.datasets import data
movies = data.movies.url
alt.Chart(movies).mark_bar().encode(
x='binned_rating:O',
y='count()',
).transform_bin(
'binned_rating', field='IMDB Rating'
)
А вот цветовая шкала с преобразованием bin верхнего уровня:
import altair as alt
from altair.datasets import data
cars = data.cars.url
alt.Chart(cars).mark_point().encode(
x='Horsepower:Q',
y='Miles_per_Gallon:Q',
color='binned_acc:O'
).transform_bin(
'binned_acc', 'Acceleration', bin=alt.Bin(maxbins=5)
)
Преимущество преобразования верхнего уровня в том, что полученное именованное поле можно использовать в нескольких местах диаграммы. Обратите внимание на небольшое различие: разбиение в кодировании сохраняет диапазон каждого интервала, а преобразование сводит интервал к одному представляющему его значению.
Параметры преобразования
Метод Chart.transform_bin основан на классе BinTransform, который поддерживает следующие параметры:
Нажмите, чтобы показать таблицу
| Свойство | Тип | Описание |
|---|---|---|
as | anyOf(FieldName, array(FieldName)) | Имена выходных полей для начала и конца интервала. Можно указать строку или массив из двух строк: имя поля начала и имя поля конца соответственно. Если задана одна строка, например |
bin | anyOf(boolean, BinParams) | Объект с параметрами разбиения на интервалы либо |
field | FieldName | Поле данных, которое нужно разбить на интервалы. |