Гистограмма Альтаира, возможно ли дать имя mark_rule? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть датафрейм, и я строю следующий график.

enter image description here

Код такой:

import altair as alt
alt.renderers.enable('default')

base = alt.Chart(df_800).properties()

bar = base.mark_bar().encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

rule = base.mark_rule(color='red').encode(
    x='mean(volumechange)',
    size=alt.value(5)
)

rule2 = base.mark_rule(color='orange').encode(
    x='median(volumechange)',
    size=alt.value(5),
)

bar + rule + rule2

Iхотите добавить легенду или что-то в этом роде, чтобы показать, что красное правило - это среднее значение изменения громкости, а оранжевое - это медиана. Это первый раз, когда я использую Альтаир, любая помощь приветствуется.

1 Ответ

2 голосов
/ 10 октября 2019

Легенды в Altair генерируются автоматически из цветовых кодировок, поэтому хитрость заключается в том, чтобы перевести агрегаты в формат, где их метка представляет собой столбец, закодированный цветом. Вот один из способов сделать это:

import pandas as pd
import numpy as np
df_800 = pd.DataFrame({'volumechange': np.random.randn(100)})

base = alt.Chart(df_800)

bar = base.mark_bar(color='lightgray').encode(
    x=alt.X('volumechange', bin=True, title='Volume Change'),
    y='count()'
)

aggregates = base.transform_aggregate(
    mean='mean(volumechange)',
    median='median(volumechange)',
).transform_fold(
    ['mean', 'median']
).mark_rule().encode(
    x='value:Q',
    color='key:N'
)

bar + aggregates

enter image description here

...