Постройте как медианное, так и среднее значение на графике Альтаира

Как я могу построить как среднее, так и медианное значение в Альтаире, выделив цветовую кодировку?

Ниже представлена ​​моя первая попытка, но она не включает легенду и не кажется самым элегантным способом.

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

введите здесь описание изображения


person max    schedule 14.06.2019    source источник


Ответы (1)


Лучше всего это сделать с помощью агрегатного преобразования для вычисления агрегаты, за которыми следует преобразование сгиба, чтобы два столбца для использования в единой кодировке:

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',
)

введите здесь описание изображения

person jakevdp    schedule 14.06.2019