![](/img/trans.png)
[英]problem in sorting bar chart in altair that layered with a mark text
[英]Sorting lost in Altair layered bar chart with error bars
我正在為條形圖使用自定義排序,並且效果很好。 但是,當我想向其中添加誤差線並使用分層圖表時,不再考慮排序。 我還定義了axis = None
,這也沒有考慮到。
下面是一個數據示例:
df = pd.DataFrame(
{'size' : ['huge', 'huge', 'huge', 'huge', 'huge', 'huge', 'big', 'big', 'big', 'big', 'big', 'big', 'small', 'small', 'small', 'small', 'small', 'small'],
'weight': ['10 mg', '10 mg', '10 g', '10 g', '10 kg', '10 kg', '10 mg', '10 mg', '10 g', '10 g', '10 kg', '10 kg','10 mg', '10 mg', '10 g', '10 g', '10 kg', '10 kg'],
'value': [3.5,2.6,5.1,6.5,2.3,4.6,7.1,2.8,6.9,1.5,2.6,2.8,6.9,2.3,4.6,3.5,2.6,5.1]
}
)
僅使用條形圖有效
alt.Chart(df).mark_bar().encode(
x = alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y = alt.Y('mean(value)', title='Value'),
color = alt.Color('weight:O', sort=['10 kg', '10 g', '10 mg']),
column = alt.Column('size', sort=['huge', 'big', 'small'])
)
但不再有誤差條:
error_bars = alt.Chart().mark_errorbar(extent='ci').encode(
x=alt.X('weight:O', sort=['10 kg', '10 g', '10 mg']),
y='value:Q'
)
bars = alt.Chart().mark_bar().encode(
x = alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y = alt.Y('mean(value)', title='Value'),
color = alt.Color('weight:O', sort=['10 kg', '10 g', '10 mg'])
)
alt.layer(bars, error_bars, data=df).facet(
column = alt.Column('size', sort=['huge', 'big', 'small'])
)
在這兩個圖中, axis
和title
都設置為None
但在分層圖表中未考慮在內。 奇怪的是排序考慮了圖例(見color = ...
)而不是 x 軸(在每個尺寸內)。
有沒有辦法解決這個問題,或者我沒有正確使用分層圖表?
要隱藏分層圖表中的軸,您應該在兩個圖層中設置axis=None
和title=None
:
error_bars = alt.Chart().mark_errorbar(extent='ci').encode(
x=alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y='value:Q'
)
bars = alt.Chart().mark_bar().encode(
x = alt.X('weight:O', title=None, axis=None, sort=['10 kg', '10 g', '10 mg']),
y = alt.Y('mean(value)', title='Value'),
color = alt.Color('weight:O', sort=['10 kg', '10 g', '10 mg'])
)
alt.layer(bars, error_bars, data=df).facet(
column = alt.Column('size', sort=['huge', 'big', 'small'])
)
您會注意到我的圖表版本具有正確的排序順序:這是因為我使用的是 Altair 4.0 版。 在早期版本的 Altair/Vega-Lite 中存在一個錯誤,該錯誤會阻止排序在分層圖表中正常運行。
更新到 Altair 4.0 或更高版本,您的排序將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.