首页 > 解决方案 > 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 网站上的示例仅包含一种颜色,并且似乎是自动的。

标签: pythonaltair

解决方案


是的,您将需要重塑您的数据,或者作为 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'
)

图表


推荐阅读