亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么創建分層條形圖會刪除排序?

為什么創建分層條形圖會刪除排序?

呼如林 2022-06-14 10:43:01
我正在嘗試使用Altair創建堆積條形圖。我想用所有條形總數的百分比按降序標記每個條形。以下是我創建兩層的方法(一層用于條形,一層用于標簽):import pandas as pdimport altair as altdf1 = pd.DataFrame({'a': list('AAAABBBB'),                    'b': list('xxyyxxyy'),                    'c': [2, 7, 4, 1, 2, 6, 8, 4]})df2 = df1.groupby('a', as_index=False).sum()df2['pct'] = (df2['c'] / df2['c'].sum()).round(2)bars = alt.Chart(df1).mark_bar().encode(    x=alt.X('c', scale=alt.Scale(domain=[0, 22])),    y=alt.Y('a', sort=alt.EncodingSortField(field='c', order='descending')),    color='b',)text = alt.Chart(df2).mark_text(dx=15).encode(    x='c',    y=alt.Y('a', sort=alt.EncodingSortField(field='c', order='descending')),    text='c')每一層都按正確的順序排序,看起來不錯。但是當我組合它們時,排序被重置,它們不再按降序排序。both = bars + textboth組合圖層時如何保持條形排序?
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

Vega-Lite 不支持對聯合域進行排序。如果您打開圖表的 javascript 控制臺,或者在 vega 編輯器中查看它,您將看到 Vega-Lite 產生的警告:


[Warning] Dropping sort property {"field":"c","op":"sum","order":"descending"} as unioned domains only support boolean or op "count".

[Warning] Dropping sort property {"field":"c","op":"mean","order":"descending"} as unioned domains only support boolean or op "count".

相關的 Vega-Lite 錯誤在這里:https ://github.com/vega/vega-lite/issues/5048 。


如果您從同一數據集構建兩個圖層,則可以避免這種情況;例如:


bars = alt.Chart(df1).mark_bar().encode(

    x=alt.X('c:Q', scale=alt.Scale(domain=[0, 22])),

    y=alt.Y('a:N', sort=alt.EncodingSortField(field='c', op='sum', order='descending')),

    color='b:N',

)


text = alt.Chart(df1).mark_text(dx=15).encode(

    x='sum(c):Q',

    y=alt.Y('a:N', sort=alt.EncodingSortField(field='c', op='sum', order='descending')),

    text=alt.Text('sum(c):Q')

)


bars + text

http://img1.sycdn.imooc.com//62a7f5e700014bb204770083.jpg

查看完整回答
反對 回復 2022-06-14
  • 1 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號