У меня проблемы с получением правильного порядка цвета в легенде.
Я пытаюсь достичь:
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 самостоятельно, я получаю правильную легенду.Но когда я соединяю их вместе, используя & моя легенда и изменения цвета на:
cash: blue
equity: yellow
fixed income: red
, я также отмечаю, что я добавил в столбец sort_asset в DataFrame, который я могу использовать для правильной сортировки ресурсов, и яиспользование его для обеспечения правильной сортировки стека.
Я уверен, что мне не хватает чего-то простого, так как я новичок в altair.Что я могу изменить в приведенном выше коде для отображения правильных цветов и порядков?