Разбиение на интервалы — 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, который поддерживает следующие параметры:

Нажмите, чтобы показать таблицу
СвойствоТипОписание
asanyOf(FieldName, array(FieldName))

Имена выходных полей для начала и конца интервала. Можно указать строку или массив из двух строк: имя поля начала и имя поля конца соответственно. Если задана одна строка, например "val", поле конца будет называться "val_end".

binanyOf(boolean, BinParams)

Объект с параметрами разбиения на интервалы либо true для стандартных параметров.

fieldFieldName

Поле данных, которое нужно разбить на интервалы.