Как сместить точку пересечения осей x и y от 0 до 1 с помощью Python Altair? - PullRequest
1 голос
/ 04 августа 2020

У меня есть информационная панель, на которой вы можете выбрать несколько наборов данных с помощью виджета. Я использую библиотеку Altair в Python, чтобы создавать классические линейные графики из этих наборов данных с осями x и y, начинающимися с нуля. Отображаемые данные являются нормализованными данными, то есть все наборы данных по определению начинаются со значения y = 1. Поскольку наборы данных представляют разные параметры, ось Y динамически изменяется от набора данных к набору данных. График кодируется примерно так:

chart = alt.Chart(df_datapoints).mark_line().encode(
        x=alt.X('X-Value',axis=alt.Axis(title='X-Values', tickCount=10)),
        y=alt.Y('Y-Value', axis=alt.Axis(title='Normalized to Baseline')),
        color=alt.Color('Test ID', legend=None)
        )

График выглядит следующим образом:

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

Теперь я хотел бы, чтобы ось x начиналась с значения y = 1, чтобы лучше видеть, какие значения увеличиваются или уменьшаются от начальной точки. Есть ли возможность сместить начальную точку оси x на этом простом линейном графике с нуля на 1? Я ничего не нашел в документации Альтаира. Или можно было бы добавить сильную линию на Y = 1, чтобы увидеть нормализованную базовую линию?

1 Ответ

1 голос
/ 04 августа 2020

Один из способов сделать это - использовать свойство axis.offset, которое управляет смещением осей в пикселях. Вам нужно будет настроить это в зависимости от границ ваших данных, если вы хотите, чтобы оси пересекались в определенной точке данных:

import altair as alt
import pandas as pd

df = pd.DataFrame({
    'x': [0, 1, 2, 3, 4],
    'y': [0, 1, 2, 3, 4],
})

alt.Chart(df).mark_line().encode(
  x=alt.X('x', axis=alt.Axis(grid=False, offset=-75)),
  y=alt.Y('y', axis=alt.Axis(grid=False, offset=-100))
)

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

...