在Altair直方图中设置分类列顺序
我想要在直方图中交换列的顺序。
data = {'Age group': {0: '0 - 4', 1: '12 - 16', 2: '5 - 11', 3: 'not specified'},
'Count': {0: 81.0, 1: 86.0, 2: 175.0, 3: 0.0}}
dp = pd.DataFrame(data)
alt.Chart(dp).mark_bar().encode(
x=alt.X('Age group:N', title='Age group'),
y='Count:Q',
tooltip=['Age group', 'Count']
).properties(title='Number of children in voucher', width=400)
我只是想换一下顺序,但找不到方法。
2 个回答
1
除了可以通过 sort
直接在 altair 中设置类别的顺序之外,当你处理分类数据时,altair 还能够从 pandas 数据框中推断出顺序(这对于其他 pandas 操作来说也可能更方便):
import pandas as pd
import altair as alt
data = pd.DataFrame({
'Age group': {0: '0 - 4', 1: '12 - 16', 2: '5 - 11', 3: 'not specified'},
'Count': {0: 81.0, 1: 86.0, 2: 175.0, 3: 0.0}
})
data['Age group'] = pd.Categorical(
data['Age group'],
['0 - 4', '5 - 11', '12 - 16', 'not specified'],
ordered=True
)
alt.Chart(data, title='Number of children in voucher', width=200).mark_bar().encode(
x='Age group',
y='Count:Q',
tooltip=['Age group', 'Count']
)
2
Alt.X
模式中有一个叫做 sort
的参数,它可以接受 一个数组,用来指定字段值的优先顺序:
X_ORDER = ["0 - 4", "5 - 11", "12 - 16", "not specified"] # >> set an order
alt.Chart(dp).mark_bar().encode(
x=alt.X(
"Age group:N",
title="Age group",
sort=X_ORDER, # >> add this line
),
y="Count:Q",
tooltip=["Age group", "Count"],
).properties(title="Number of children in voucher", width=400)
输出结果: