Добавление легенды к многослойной диаграмме в altair - PullRequest
1 голос
/ 08 февраля 2020

Рассмотрим следующий пример:

    import altair as alt
    from vega_datasets import data

    df = data.seattle_weather()

    temp_max = alt.Chart(df).mark_line(color='blue').encode(
        x='yearmonth(date):T',
        y='max(temp_max)',
    )

    temp_min = alt.Chart(df).mark_line(color='red').encode(
        x='yearmonth(date):T',
        y='max(temp_min)',
    )

    temp_max + temp_min

В итоговой таблице я хотел бы добавить легенду, показывающую, что синяя линия показывает максимальную температуру, а красная линия - минимальную температуру. Какой самый простой способ добиться этого?

Я видел (например, в решении этого вопроса: Маркировка многослойных карт в Альтаире (Python) ), что Альтаир только добавляет легенду если в кодировке вы устанавливаете цвет или размер или около того, обычно с категориальным столбцом, но это здесь невозможно, потому что я строю весь столбец, и метка должна быть именем столбца (которое теперь отображается в метке оси Y).

1 Ответ

2 голосов
/ 08 февраля 2020

Я бы сделал кратное преобразование , чтобы переменные могли быть закодированы правильно.

import altair as alt
from vega_datasets import data

df = data.seattle_weather()

alt.Chart(df).mark_line().transform_fold(
    fold=['temp_max', 'temp_min'], 
    as_=['variable', 'value']
).encode(
    x='yearmonth(date):T',
    y='max(value):Q',
    color='variable:N'
)

enter image description here

...