Как передать формулу как «переменную x» в диаграмме Altair?

#interactive #altair

#интерактивный #altair

Вопрос:

У меня есть pandas DF с двумя количественными переменными A и B.

Я хотел бы построить график, как описано в галерее примеров (https://altair-viz.github.io/gallery/selection_histogram.html#selection-histogram ).

Никаких проблем с точечной диаграммой. Но для гистограммы я хотел бы представить среднюю разницу между A и B (формула должна быть: sum (A) / sum (B) -1) только для выделения кистью.

Есть ли способ передать формулу в аргументе x в приведенном ниже коде?

 chart1 = alt.Chart(df).mark_bar().encode(
    #y='Origin:N',
    #color='Origin:N',
    x='sum(A)/sum(B)-1'
).transform_filter(
    brush
)
 

Спасибо за любую помощь

Ответ №1:

Взгляните на агрегатное преобразование и вычислите преобразование

Это выглядело бы примерно так:

 chart = alt.Chart(df).transform_filter(
    brush
).transform_aggregate(
    sum_A = 'sum(A)',
    sum_B = 'sum(B)',
    groupby=['Origin']
).transform_calculate(
    diff = 'datum.sum_A / datum.sum_B - 1'
).mark_bar().encode(
    y='Origin:N',
    color='Origin:N',
    x='diff:Q'
)
 

В общем случае порядок преобразований имеет значение: например, при вводе transform_filter первого значения суммы будут вычисляться по отфильтрованным значениям.

Комментарии:

1. Просто идеально! Большое спасибо