Altair 限制条数
Altair limit number of bars
假设我有这样一个数据框
label counts
4 4 8
5 5 7
6 6 6
7 7 5
0 0 4
1 1 3
2 2 2
3 3 1
我想用altair做一个条形图,条形的高度是counts,label是label。如果我想要前 3 个计数,如何限制要显示的柱数?
我知道我可以让 df.sort_values("counts", ascending=False).iloc[:3]
成为图表的来源,但我想知道是否有直接使用 altair 进行此操作的方法。
您可以按照 Altair 文档中的 Top K Items 示例执行此操作。此处它应用于您的数据:
import altair as alt
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO("""
label counts
4 4 8
5 5 7
6 6 6
7 7 5
0 0 4
1 1 3
2 2 2
3 3 1
"""), delim_whitespace=True)
alt.Chart(df).transform_window(
rank='rank(counts)',
sort=[alt.SortField('counts', order='descending')]
).transform_filter(
alt.datum.rank <= 3
).mark_bar().encode(
x='counts:Q',
y='label:O'
)
假设我有这样一个数据框
label counts
4 4 8
5 5 7
6 6 6
7 7 5
0 0 4
1 1 3
2 2 2
3 3 1
我想用altair做一个条形图,条形的高度是counts,label是label。如果我想要前 3 个计数,如何限制要显示的柱数?
我知道我可以让 df.sort_values("counts", ascending=False).iloc[:3]
成为图表的来源,但我想知道是否有直接使用 altair 进行此操作的方法。
您可以按照 Altair 文档中的 Top K Items 示例执行此操作。此处它应用于您的数据:
import altair as alt
import pandas as pd
from io import StringIO
df = pd.read_csv(StringIO("""
label counts
4 4 8
5 5 7
6 6 6
7 7 5
0 0 4
1 1 3
2 2 2
3 3 1
"""), delim_whitespace=True)
alt.Chart(df).transform_window(
rank='rank(counts)',
sort=[alt.SortField('counts', order='descending')]
).transform_filter(
alt.datum.rank <= 3
).mark_bar().encode(
x='counts:Q',
y='label:O'
)