按 Altair 中的多列排序

Sort by multiple columns in Altair

在下面,我想先按计数排序(在下面的示例中有效),然后再按组名排序(因此对于计数为 1 的两个项目,B 应该列在前面D):

data = pd.DataFrame({'col':['D','A','C','A','C','B','C']})
alt.Chart(data).mark_bar().encode(
    x='count()',
    y=alt.Y('col', sort='-x')
)

我试过了,但没用:

test1 = alt.Chart(data).mark_bar().encode(
    x='count():Q',
    y=alt.Y('col:N', sort=['-x', 'col'])
)

但是您绝对可以通过传递一个列表来手动强制排序,因此您可以像这样整理一个有序列表并将其传递给 altair:

manual_ordered = data['col'].value_counts().reset_index()
manual_ordered = manual_ordered.sort_values(['col', 'index'], ascending=[False, True])

    manual = alt.Chart(data).mark_bar().encode(
        x='count()',
        y=alt.Y('col', sort=manual_ordered)
    )