在Altair中连接两个图表时控制图例颜色和顺序

在Altair中连接两个图表时控制图例颜色和顺序,altair,Altair,我很难在图例中找到正确的颜色顺序 我正在努力实现: cash: blue fixed_income: yellow equity: red 我正在使用以下数据框“dfl”绘制两行三个图表: trade_date account owner account_type asset value sort_asset 0 2002-01-02 p2_inv p2 inv cash 0.0 0 1 2002-01-03 p2_inv

我很难在图例中找到正确的颜色顺序

我正在努力实现:

cash: blue
fixed_income: yellow
equity: red
我正在使用以下数据框“dfl”绘制两行三个图表:

  trade_date account owner account_type asset  value  sort_asset
0 2002-01-02  p2_inv    p2          inv  cash    0.0           0
1 2002-01-03  p2_inv    p2          inv  cash    0.0           0
2 2002-01-04  p2_inv    p2          inv  cash    0.0           0
dfl.shape(76824,7)

我有以下代码:

df_p1 = dfl[dfl['owner'] == 'p1']
df_p2 = dfl[dfl['owner'] == 'p2']

base_p1 = alt.Chart(df_p1).mark_area().encode(
    x=alt.X('trade_date:T', title=""), 
    y=alt.Y('sum(value):Q', stack='normalize', title="Asset Allocation"), 
    color=alt.Color('asset:N', sort=['cash', 'fixed_income', 'equity']),
    order=alt.Order('sort_asset:N', sort='ascending')
).properties(
    width=120,
    height=160
).facet(
    column=alt.Column('account:N'), 
)
base_p2 = alt.Chart(df_p2).mark_area().encode(
    x=alt.X('trade_date:T', title=""), 
    y=alt.Y('sum(value):Q', stack='normalize', title="Asset Allocation"), 
    color=alt.Color('asset:N', sort=['cash', 'fixed_income', 'equity']),
    order=alt.Order('sort_asset:N', sort='ascending')
).properties(
    width=120,
    height=160
).facet(
    column=alt.Column('account:N'),
)

base_p1 & base_p2
当我自己运行base_p1或base_p2时,我得到了正确的图例。但是,当我使用&my legend and color将它们连接在一起时,将更改为:

cash: blue
equity: yellow
fixed income: red
我还注意到,我在DataFrame中添加了一个sort_asset列,可以使用它对资产进行正确排序,并且我使用它来确保堆栈被正确排序


我肯定我错过了一些简单的东西,因为我是牛郎星的新手。我可以在上面的代码中更改什么来呈现正确的颜色和顺序

这是Altair版本2中的一个已知错误:排序字段不保留在复合图表中。以下是一些细节(包括解决方法的想法):


Altair 3.0修复了此错误,应该在下周的某个时间发布。

这是Altair版本2中的一个已知错误:排序字段不会保留在复合图表中。以下是一些细节(包括解决方法的想法):


Altair 3.0修复了这个bug,应该在下周的某个时候发布。

我可以等到下一个版本。干杯。我可以等到下一个版本。干杯