Этот ответ показывает, как огранить многослойные диаграммы в альтиаре. В документации функция facet()
заявляет, что может принимать параметр facet
, который может быть string
или alt.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'
facet=alt.Facet('Origin', sort=['USA', 'Europe', 'Japan'], columns=2)
)
К сожалению, он вызывает эту неинформативную ошибку
Traceback (most recent call last):
File ".\test.py", line 19, in <module>
'test.html', webdriver='firefox', embed_options={'renderer': 'svg'})
File "<conda-path>\lib\site-packages\altair\vegalite\v4\api.py", line 476, in save
result = save(**kwds)
File "<conda-path>\lib\site-packages\altair\utils\save.py", line 79, in save
spec = chart.to_dict()
File "<conda-path>\lib\site-packages\altair\vegalite\v4\api.py", line 382, in to_dict
dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 328, in to_dict
context=context,
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 62, in _todict
for k, v in obj.items()
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 63, in <dictcomp>
if v is not Undefined
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 56, in _todict
return obj.to_dict(validate=validate, context=context)
File "<conda-path>\lib\site-packages\altair\vegalite\v4\api.py", line 382, in to_dict
dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 328, in to_dict
context=context,
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 62, in _todict
for k, v in obj.items()
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 63, in <dictcomp>
if v is not Undefined
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 58, in _todict
return [_todict(v, validate, context) for v in obj]
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 58, in <listcomp>
return [_todict(v, validate, context) for v in obj]
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 56, in _todict
return obj.to_dict(validate=validate, context=context)
File "<conda-path>\lib\site-packages\altair\vegalite\v4\api.py", line 382, in to_dict
dct = super(TopLevelMixin, copy).to_dict(*args, **kwargs)
File "<conda-path>\lib\site-packages\altair\utils\schemapi.py", line 339, in to_dict
raise SchemaValidationError(self, err)
altair.utils.schemapi.SchemaValidationError: Invalid specification
altair.vegalite.v4.api.Chart, validating 'required'
'data' is a required property
Без параметра columns=2
он работает, как и ожидалось, но не имеет столбцов.