Управляйте цветом и порядком легенды при объединении двух графиков в Альтаире - PullRequest
0 голосов
/ 21 апреля 2019

У меня проблемы с получением правильного порядка цвета в легенде.

Я пытаюсь достичь:

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.Что я могу изменить в приведенном выше коде для отображения правильных цветов и порядков?

1 Ответ

1 голос
/ 21 апреля 2019

Это известная ошибка в Altair версии 2: отсортированные поля не сохраняются в составных диаграммах.Некоторые подробности (включая идеи для обходных путей) приведены здесь: https://github.com/altair-viz/altair/issues/820

Altair 3.0 исправляет эту ошибку и должна быть выпущена через некоторое время на следующей неделе.

...