Это связано с небольшой ошибкой, которая очень кратко обсуждалась в конце Фасетной секции в документации.
Вы можете представить многоуровневую диаграмму в Altair как иерархию,с объектом LayerChart
в качестве родителя и каждым из отдельных объектов Chart
в качестве дочерних.Потомки могут либо наследовать данные от родителя, либо указать свои собственные данные, в этом случае родительские данные игнорируются.
Теперь, поскольку вы указали данные для каждой дочерней диаграммы отдельно, они игнорируют любые данные или преобразование поступающих.вниз от родителя.Чтобы обойти это, нужно указать данные только в родительском .
В качестве примечания, у Altair также есть ярлык для ручной фильтрации и объединения, которые вы здесь используете:facet()
метод.Вот пример соединения всего этого:
import altair as alt
from vega_datasets import data
cars = data.cars()
horse = alt.Chart().mark_point().encode(
x = 'Weight_in_lbs',
y = 'Horsepower'
)
miles = alt.Chart().mark_point(color='red').encode(
x = 'Weight_in_lbs',
y = 'Miles_per_Gallon'
)
alt.layer(horse, miles, data=cars).facet(column='Origin')