#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']
)