Python Altair — Привязка гистограммы к шкале

#python #charts #scroll #scaling #altair

#python #Диаграммы #прокрутка #масштабирование #altair

Вопрос:

Я хотел бы объединить два примера из документации Altair, чтобы получить возможность прокручивать гистограмму по вертикали. Одним из вариантов использования этого может быть диаграмма Ганта.

В настоящее время я получаю возможность прокрутки только по горизонтали, при этом содержимое диаграммы сжимается до свойства высоты, которое я определяю:

 import altair as alt
from vega_datasets import data

source = data.wheat()

bars = alt.Chart(source).mark_bar().encode(
    x='wheat:Q',
    y="year:O"
)

text = bars.mark_text(
    align='left',
    baseline='middle',
    dx=3  # Nudges text to right so it doesn't appear on top of the bar
).encode(
    text='wheat:Q'
)

selection = alt.selection_interval(bind='scales')
(bars   text).properties(height=300).add_selection(
    selection
)
 

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

Спасибо!

Ответ №1:

Категориальные кодировки, такие как ordinal ( ":O" ) и nominal ( ":N" ), не могут иметь выбор с привязкой к масштабу. Чтобы сделать вертикальную ось интерактивной, вы должны сделать кодировку y количественной. Например:

 bars = alt.Chart(source).mark_bar(orient='horizontal').encode(
    x='wheat:Q',
    y='year:Q',
)
 

Комментарии:

1. Спасибо, @jakevdp — большинство ответов на SO по этому вопросу от вас, поэтому я приветствую ваши усилия!