This答案显示了如何在高度上对分层图表进行分面。
在documentation中,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
参数,它可以按预期运行,但没有列。
答案 0 :(得分:0)
将column=2
属性移出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
)