在 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:2
、b:3
和 c: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,因此只绘制 a
和 b
?我知道如何用 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')
)
这是一个使用 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:2
、b:3
和 c: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,因此只绘制 a
和 b
?我知道如何用 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')
)