首页 > 解决方案 > 使用 Altair mark_text 在堆叠条形图中堆叠文本

问题描述

我正在尝试使用mark_text在堆积条形图中创建堆积文本。我想用“时间”的值标记每个条。堆积面积图的相应堆栈中是否可以有文本标记?以下是我创建条形图和文本图的方法:

bar = alt.Chart(df_pivot, title = {'text' :'How do people spend their time?', 'subtitle' : 'Average of minutes per day from time-use diaries for people between 15 and 64'}).mark_bar().transform_calculate(
    filtered="datum.Category == 'Paid work'"
).transform_joinaggregate(sort_val="sum(filtered)", groupby=["Country"]
).encode(
    x=alt.X('Time', stack='zero'),
    y=alt.Y('Country', sort=alt.SortField('sort_val', order='descending')),
    color=alt.Color('Category:N', sort=CatOrder),
    order=alt.Order('color_Category_sort_index:Q'),
    tooltip=['Country', 'Category', 'Time']
).interactive()
bar

酒吧

text = alt.Chart(df_pivot).mark_text(align='center', baseline='middle', color='black').transform_calculate(
    filtered="datum.Category == 'Paid work'"
).transform_joinaggregate(sort_val="sum(filtered)", groupby=["Country"]
).encode(
    x=alt.X('Time:Q', stack='zero'),
    y=alt.Y('Country', sort=alt.SortField('sort_val', order='descending')),
    detail='Category:N',
    text=alt.Text('Time:Q', format='.0f')
)
bar + text

条形+文字

问题:

并不是我不明白我为什么会遇到这些问题。我是这个平台的新手,源代码来自我的笔记本:https ://www.kaggle.com/interphuoc0101/times-use 。非常感谢。

标签: pythondata-visualizationaltairvega

解决方案


您的条形图指定堆叠顺序:

order=alt.Order('color_Category_sort_index:Q'),

您应该向文本层添加匹配的order编码,以确保文本以相同的顺序显示。


推荐阅读