Altair Color 正在覆盖/删除排序顺序

Altair Color is overriding / removing sort order

A​​ltair 的新用户,尝试按 "Player COUNT" 字段对 NFL 球员姓名进行排序。数据经过预先汇总,每个玩家名称仅显示一次,并带有与之关联的计数。

根据 -x 中的计数对 'Player Name' 的 y 轴进行排序工作正常,直到我添加颜色,我希望它是一个离散维度。知道需要做什么来防止颜色覆盖 Y 上的排序吗?

import altair as alt
import pandas as pd

source = pd.read_csv("C:/Users/abcdef/Documents/user_players.csv", encoding = "ISO-8859-1") 
print(source.head())

bars = alt.Chart(source).mark_bar().encode(
    x=alt.X('Player COUNT:Q'),#,scale=alt.Scale(domain=(1,5),clamp=True)),
    y=alt.Y('Player Name:N',sort='-x')
    #y=alt.Y('Player Name:N',sort=alt.SortField(field="sort_order",op="distinct",order='descending')),
    ,color='Ownership Percentile:O'
).transform_filter(
      alt.FieldLTEPredicate(field='player_row', lte=50)
)

text = bars.mark_text(
    align='left',
    baseline='middle',
    dx=3  # Nudges text to right so it doesn't appear on top of the bar
).encode(
    text='Player COUNT:Q'
)

(bars + text).properties(width =400,height=900)#.interactive()

这看起来像是 Vega-Lite 渲染器中的错误。您可以通过使用带有显式 opEncodingSortField 代替 -x shorthand:

来解决它
bars = alt.Chart(source).mark_bar().encode(
    x=alt.X('Player COUNT:Q'),#,scale=alt.Scale(domain=(1,5),clamp=True)),
    y=alt.Y('Player Name:N',sort=alt.EncodingSortField(field="Player COUNT", order='descending', op='max')),
    color='Ownership Percentile:O'
).transform_filter(
      alt.FieldLTEPredicate(field='player_row', lte=50)
)