mark_area сброс домена по оси Y (Altair)

#python #altair

#python #altair

Вопрос:

Я пытаюсь использовать mark_area() для отображения неопределенности вокруг временного ряда (показано ниже). Однако, когда я представляю новый слой, домен диаграммы по оси Y сбрасывается до значения по умолчанию.

 chart = alt.Chart(agg_data).encode(
        x=alt.X(field='date', type='temporal', timeUnit='yearmonth', title='date'),
        y=alt.Y(field=r'concentration', type='quantitative', title=r'[CH4] (ppb)',
            scale=alt.Scale(domain=[1600, 1900])),
        tooltip=[alt.Tooltip(field='date', type='temporal', title='date', format='%Y, %m'),
                 alt.Tooltip(field=r'concentration', type='nominal', title=r'concentration')]
        ).properties(width='container', height=300)

# Add uncertainty bands
bands = chart.mark_area(color='dodgerblue', fillOpacity=0.4).encode(
            x=alt.X(field='date', type='temporal', timeUnit='yearmonth', title='date'),
            y='lower bound:Q',
            y2='upper bound:Q',
        ).properties(width='container', height=300)

l = chart.mark_line(color='dodgerblue')
p = chart.mark_point(color='dodgerblue', filled=True)
layer = alt.layer(bands, l, p)
 

Вот результат, который я получаю перед добавлением bands :

введите описание изображения здесь

и после:

введите описание изображения здесь

Как я могу сохранить домен по оси Y с рисунка 1 во время использования mark_area() ?

Ответ №1:

Диаграммы областей по умолчанию содержат ноль. Чтобы изменить это, в y кодировке укажите alt.Scale(zero=False) :

   y=alt.Y('lower bound:Q', scale=alt.Scale(zero=False)),