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

#histogram #transform #mean #altair

Вопрос:

Я пытаюсь создать гистограмму с глобальным средним значением. Исходную таблицу необходимо сначала преобразовать с помощью transform_aggregate. Но когда я добавляю среднее значение на диаграмму, гистограмма исчезает, и на диаграмме отображается только средняя линия. Кто-нибудь может мне с этим помочь? Вот код.

 import altair as alt
from vega_datasets import data

source = data.movies.url

base = alt.Chart(source).transform_aggregate(agg='mean(IMDB_Rating)',groupby=['Distributor'])

bar = base.mark_bar().encode( x=alt.X('agg:Q', bin=alt.Bin(step=0.5), ),y='count()')

rule = base.mark_rule(color='red').encode(x='mean(agg):Q',size=alt.value(5))

bar   rule
 

Смотрите выходную диаграмму здесь

Ответ №1:

Кажется, что присутствие агрегированного преобразования в двух слоях каким-то образом искажает поток данных; это похоже на ошибку. Я смог найти способ обойти это, прикрепив преобразование к диаграмме верхнего уровня, а не к каждому отдельному слою:

 import altair as alt
from vega_datasets import data

source = data.movies.url

bar = alt.Chart(source).mark_bar().encode(
  x=alt.X('agg:Q', bin=alt.Bin(step=0.5), ),
  y='count()'
)

rule = alt.Chart(source).mark_rule(color='red').encode(
  x='mean(agg):Q',size=alt.value(5)
)

alt.layer(bar, rule).transform_aggregate(
  agg='mean(IMDB_Rating)',
  groupby=['Distributor']
)
 

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