我正在尝试创建一个函数来创建一个图表,您可以将行、列或面类作为参数传递到图表中。以下是一个非常简化的版本:
def make_chart(data, x, y, **kwargs):
return alt.Chart(data).mark_line().encode(x=x, y=y).facet(**kwargs)如果我传递row = alt.Facet('z')或column = alt.Facet('z')作为函数的工作函数,但是如果我试图传递facet=alt.Facet('z',columns=2),则会得到一个错误,因为facet方法不接受Facet类作为输入,而是期望字段=‘z’,columns=2。
因此,我尝试使用it's ()方法解压alt.Facet(‘z’,columns=2)的参数,但是我得到了一个"Z编码字段被指定而没有类型“错误。
我知道我可以使用alt.Facet('z',columns=2)属性访问alt.Facet (‘z’,columns=2)属性,但是有任何方法可以将所有属性作为字典吗?还是我可以通过alt.Facet作为一个论点?
我需要创建一些分层的平面图表,所以我不能在编码中使用facet。
谢谢
发布于 2022-03-17 18:35:41
Altair目前不允许使用.facet(facet=alt.Facet('col', columns=1)),但您可以使用.facet(facet=alt.Facet('col'), columns=1)):
import altair as alt
import pandas as pd
def make_chart(data, x, y, **kwargs):
return alt.Chart(data).mark_point().encode(x=x, y=y).facet(**kwargs)
make_chart(
pd.DataFrame({'x': [1, 2], 'y': ['b', 'a']}),
'x',
'y',
facet=alt.Facet('y'),
columns=1
)

https://stackoverflow.com/questions/71516881
复制相似问题