[英]In Altair/Vega-lite how to show percentage of grouped category instead of total?
新手使用 Altair/Vega-lite 並努力“獲得”轉換、計算和編碼思維方式,尤其是對於更復雜/嵌套的數據。
具體來說,我正在嘗試創建一個超級簡單的分層直方圖,顯示不同國家的工資分布。
到目前為止,我能夠在 Y 軸上獲得與總數相比的出現百分比:
salaries = {
'NL': np.random.normal(loc=80000, scale=30000, size=(500,)),
'ES': np.random.normal(loc=80000, scale=30000, size=(50,))
}
source = pd.DataFrame({k:pd.Series(v) for k,v in salaries.items()})
c = alt.Chart(source).transform_fold(
['NL', 'ES'],
as_=['Benchmark', 'Salaries']
).transform_joinaggregate(
total='count(*)',
groupby=['Benchmark']
).transform_calculate(
pct='1/ datum.total'
).mark_bar(opacity=0.3, binSpacing=0
).encode(
alt.Color('Benchmark:N'),
x=alt.X('Salaries:Q', bin=alt.Bin(maxbins=20)),
y=alt.Y('sum(pct):Q', axis=alt.Axis(format='%'), stack=None)
)
這導致:
但是,我希望百分比適用於每個類別而不是總數。 因此,在此示例中,在 Y 軸上,第二個分布應顯示與第一個分布相同水平的百分比,因為它們是相同的正態分布。
我希望它足夠清楚,為可能缺乏統計理論和詞匯表來更好地解釋事情而道歉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.