python - 使用 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
问题:
- 文本不在正确的堆栈中,并且文本的顺序也错误。
- Y 排序被重置,它们不再按预期排序。
并不是我不明白我为什么会遇到这些问题。我是这个平台的新手,源代码来自我的笔记本:https ://www.kaggle.com/interphuoc0101/times-use 。非常感谢。
解决方案
您的条形图指定堆叠顺序:
order=alt.Order('color_Category_sort_index:Q'),
您应该向文本层添加匹配的order
编码,以确保文本以相同的顺序显示。
推荐阅读
- c# - Xamarin Forms ListView 分组内容不绑定
- reactjs - 无法解决“TypeError:firebase__WEBPACK_IMPORTED_MODULE_1__.default.createUserWithEmailAndPassword 不是函数”错误
- node.js - Elasticsearch NodeJS 客户端将无法访问的节点显示为活动的
- arrays - 是否可以创建一个 Excel 数组公式,其中每个元素 n 是另一个数组的前 n 个元素的总和?
- scikit-learn - 分类 - 在给定变量的情况下定义 K 倍拆分
- amazon-web-services - AWS PrivateLink 终端节点 IP 地址可以更改吗?
- javascript - 如何使用 Azure CI/CD Pipeline 将 Ember.js 应用程序正确部署到 Azure 应用程序服务?
- excel - 在 Excel 中,有没有办法使用“索引匹配匹配”在多个工作表上查找一个值,然后粘贴所需工作表中的值?
- python - 尝试使用 PySpark 读取 MySQL 表时出错
- python - 我安装了 python 3.9,我使用 pip 安装的所有库在 jupyter notebook 中都不起作用