Слоистый или граненый линейный график со значениями меток в Altair - PullRequest
0 голосов
/ 03 июня 2018

Я пытаюсь создать простой линейчатый график (с несколькими столбцами для определенного поля):

bars = alt.Chart(df_probing).mark_bar(stroke='transparent').encode(
    alt.X('model_name:N', scale=alt.Scale(rangeStep=12), axis=alt.Axis(title='')),
    alt.Y('acc:Q', axis=alt.Axis(title='Accuracy', grid=False)),
    color=alt.Color('model_name:N'),
    column='task_name:N'
).configure_view(
    stroke='transparent'
).configure_axis(
    domainWidth=0.8
) 

Теперь этот график работает хорошо, но когда я пытаюсь добавить метки значений сверхубаров вот так :

text = bars.mark_text(
    align='center',
).encode(
    text='acc:Q'
)

bars + text

Выдает следующую ошибку:

ValueError: Objects with "config" attribute cannot be used within LayerChart. Consider defining the config attribute in the LayerChart object instead.

Как можно добавлять метки баров к каждому бару в гистограмме нафацетные / слоистые участки?

1 Ответ

0 голосов
/ 07 июня 2018

Методы configure_* работают только для диаграммы верхнего уровня;ошибка пытается сообщить вам об этом, но это не так ясно, как могло бы быть.

Решение состоит в том, чтобы переместить конфигурацию в объект верхнего уровня;то есть сделайте что-то вроде этого:

bars = alt.Chart(df_probing).mark_bar(stroke='transparent').encode(
    alt.X('model_name:N', title='', scale=alt.Scale(rangeStep=12)),
    alt.Y('acc:Q', title='Accuracy', axis=alt.Axis(grid=False)),
    color='model_name:N',
    column='task_name:N'
) 

text = bars.mark_text(
    align='center',
).encode(
    text='acc:Q'
)

alt.layer(bars, text).configure_view(
    stroke='transparent'
).configure_axis(
    domainWidth=0.8
)
...