分箱#
与聚合类似,在 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
类构建,该类具有以下选项