#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. Просто идеально! Большое спасибо