如何用颜色编码区分Altair中的均值和中位数?
下面是我的第一次尝试,但是它不包括图例,而且似乎不是最优雅的方式。
import altair as alt
from vega_datasets import data
source = data.cars()
mean = alt.Chart(source).mark_line(color='red', point=True).encode(
x='Year',
y='mean(Miles_per_Gallon)'
)
median = alt.Chart(source).mark_line().encode(
x='Year',
y='median(Miles_per_Gallon)'
)
mean+median
答案 0 :(得分:3)
最好使用Aggregate Transform来计算聚合,然后使用Fold Transform来允许两列以单一编码使用:
import altair as alt
from vega_datasets import data
source = data.cars()
alt.Chart(source).transform_aggregate(
mean='mean(Miles_per_Gallon)',
median='median(Miles_per_Gallon)',
groupby=['Year']
).transform_fold(
['mean', 'median'],
as_=['aggregate', 'value']
).mark_line().encode(
x='Year',
y='value:Q',
color='aggregate:N',
)