将 Facet class 传递给 Chart.facet 方法
Passing Facet class to Chart.facet method
我正在尝试创建一个函数来创建图表,您可以在其中将行、列或面 class 作为参数传递给图表。这是一个非常简化的版本:
def make_chart(data, x, y, **kwargs):
return alt.Chart(data).mark_line().encode(x=x, y=y).facet(**kwargs)
如果我通过 行 = alt.Facet('z') 或 列 = alt.Facet('z') 作为 kwargs 函数有效,但是如果我尝试传递 facet=alt.Facet('z', columns=2) 那么我得到一个错误,因为 facet 方法不接受 Facet class 作为输入,而是期望 field='z', columns=2.
所以我尝试使用 to_dict() 方法解压缩 alt.Facet('z', columns=2) 的参数,但我收到“指定的 Z 编码字段没有类型”错误。
我知道我可以使用 alt.Facet('z', columns=2)[属性] 访问 alt.Facet 的各个属性,但是有什么方法可以将所有属性作为字典获取?或者我可以将 alt.Facet 作为参数传递?
我需要创建一些分层的分面图表,所以我不能在编码中使用分面。
谢谢
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
)
我正在尝试创建一个函数来创建图表,您可以在其中将行、列或面 class 作为参数传递给图表。这是一个非常简化的版本:
def make_chart(data, x, y, **kwargs):
return alt.Chart(data).mark_line().encode(x=x, y=y).facet(**kwargs)
如果我通过 行 = alt.Facet('z') 或 列 = alt.Facet('z') 作为 kwargs 函数有效,但是如果我尝试传递 facet=alt.Facet('z', columns=2) 那么我得到一个错误,因为 facet 方法不接受 Facet class 作为输入,而是期望 field='z', columns=2.
所以我尝试使用 to_dict() 方法解压缩 alt.Facet('z', columns=2) 的参数,但我收到“指定的 Z 编码字段没有类型”错误。
我知道我可以使用 alt.Facet('z', columns=2)[属性] 访问 alt.Facet 的各个属性,但是有什么方法可以将所有属性作为字典获取?或者我可以将 alt.Facet 作为参数传递?
我需要创建一些分层的分面图表,所以我不能在编码中使用分面。
谢谢
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
)