Altair 中的多线图 - 数据格式?
Multi line plot in Altair - data formatting?
如何在 Altair 中创建多线图?
特别是,我有一个 pandas 数据框,如下所示:
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 中的预处理步骤,或使用 Fold Transform available in Altair 3.0. There is information about working with this type of wide-form data in the documentation: Altair: Long-form vs. Wide-form Data。
下面是一个使用 transform-based 方法处理与您类似的数据的示例:
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'
)
如何在 Altair 中创建多线图?
特别是,我有一个 pandas 数据框,如下所示:
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 中的预处理步骤,或使用 Fold Transform available in Altair 3.0. There is information about working with this type of wide-form data in the documentation: Altair: Long-form vs. Wide-form Data。
下面是一个使用 transform-based 方法处理与您类似的数据的示例:
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'
)