分箱#

聚合类似,在 Altair 中应用分箱转换有两种方式:在编码本身内部,或使用顶层分箱转换。

分箱转换的一个常见应用是创建直方图

import altair as alt
from vega_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 vega_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参数来对分箱参数进行更精细的控制。

如果您在多个图表组件中使用相同的分箱,则最好在顶层定义分箱,使用transform_bin()方法。

这是使用顶层分箱转换创建的上述直方图

import altair as alt
from vega_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'
)

这是使用顶层分箱转换的转换后的颜色比例尺

import altair as alt
from vega_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)
)

顶层转换的优势在于,如果需要,可以在图表中的多个地方使用相同的命名字段。请注意基于编码的分箱(保留分箱范围)和基于转换的分箱(将每个分箱折叠为单个代表值)之间分箱行为的细微差别。

转换选项#

transform_bin()方法基于BinTransform类构建,该类具有以下选项

点击显示表格

属性

类型

描述

as

anyOf(FieldName, 数组(FieldName))

用于写入分箱起始值和结束值的输出字段。这可以是字符串或包含两个元素的字符串数组,分别表示分箱起始字段和分箱结束字段的名称。如果提供单个字符串(例如,"val"),则结束字段将是"val_end"

bin

anyOf(boolean, BinParams)

指示分箱属性的对象,或简单地为true以使用默认分箱参数。

field

FieldName

要分箱的数据字段。