Altair Color 正在覆盖/删除排序顺序
Altair Color is overriding / removing sort order
Altair 的新用户,尝试按 "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 渲染器中的错误。您可以通过使用带有显式 op
的 EncodingSortField
代替 -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)
)
Altair 的新用户,尝试按 "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 渲染器中的错误。您可以通过使用带有显式 op
的 EncodingSortField
代替 -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)
)