python - Altair 中的多线图 - 数据格式?
问题描述
如何在 Altair 中创建多线图?
特别是,我有一个看起来像这样的熊猫数据框:
Commit Author Date Week Adds Deletes Changes Files
0 cf6dc511bbf Dev 1 2019-03-18 12 0 0 0 0
1 6a96d05922f Dev 1 2019-03-18 12 504 0 504 5
2 0fbc7192380 Dev 1 2019-03-19 12 125 105 230 4
3 64a9c4a1fa0 Dev 1 2019-03-19 12 8 0 8 1
并且想在同一组轴上绘制日期与添加、删除和更改。这是怎么做的?我是否需要以某种方式重塑我的数据?
Altair 网站上的示例仅包含一种颜色,并且似乎是自动的。
解决方案
是的,您将需要重塑您的数据,或者作为 pandas 中的预处理步骤,或者使用Altair 3.0 中提供的折叠变换。文档中有关于使用此类宽格式数据的信息:Altair: Long-form vs. Wide-form Data。
这是一个使用基于转换的方法处理与您类似的数据的示例:
import pandas as pd
import numpy as np
import altair as alt
df = pd.DataFrame({
'Date': pd.date_range('2019-01-01', freq='D', periods=20),
'Adds': np.random.randint(0, 100, 20),
'Deletes': np.random.randint(0, 100, 20),
'Changes': np.random.randint(0, 100, 20),
})
alt.Chart(df).transform_fold(
['Adds', 'Deletes', 'Changes']
).mark_bar().encode(
x='yearmonthdate(Date):O',
y='value:Q',
color='key:N'
)
推荐阅读
- wordpress - 在 Wordpress 中添加 Google API 时出错
- .net-5 - Blazor WASM 本地开发无法获取远程数据
- javascript - 找不到“页面”目录。NextJS 与 pkg
- java - Java 项目可以很容易地显示新场景,但仅限于某些 JavaFXML 文件,如何解决这个问题?
- protege - 为什么 protege 会自动出现蓝色箭头?
- java - JDA - 如果添加了某个角色,则向用户添加角色
- r - 将一个列表的每个命名元素附加到另一个列表的相同命名元素
- python - Python匹配字典问题中的各种关键字
- flutter - HTTP GET:标头(授权:承载令牌)
- laravel - 参数 1 传递给 UxWeb\SweetAlert\SweetAlertNotifier::__construct()