在 Altair 中设置 count() 截止值?

Setting count() cutoff in Altair?

这是一个使用 altair 的简单绘图:

import altair as alt
import pandas as pd

df = pd.DataFrame([['a',2],['a',3],['b',4],['b',5],['b',4],['c',8]], columns=['Letters', 'Numbers'])

我正在为每个字母绘制 count():所以 a:2b:3c:1

chart = alt.Chart(df).mark_bar().encode(
   alt.X('Letters:N', sort=alt.EncodingSortField(op='count', order='descending')),
   alt.Y('count():Q'))

如何过滤数据,例如,count() 必须 >= 2,因此只绘制 ab?我知道如何用 pandas 做到这一点,但想用 altair.

一步完成

您可以使用聚合转换执行此操作,然后使用过滤器转换:

alt.Chart(df).transform_aggregate(
    count='count()',
    groupby=['Letters']
).transform_filter(
    'datum.count >= 2'
).mark_bar().encode(
   alt.X('Letters:N', sort=alt.EncodingSortField(op='count', order='descending')),
   alt.Y('count:Q')
)