Сброс кодировки обратно в ноль в Альтаире - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть диаграмма c2, которая получена из (наследуется) от исходной диаграммы c1.

Как мне сбросить канал цветового кодирования в c2 обратно на ноль?

Вот упрощенный пример

import altair as alt
import pandas as pd

data = pd.DataFrame({
    'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})

c1 = alt.Chart(data).mark_bar().encode(
    x='a',
    y='b',
    color='a'
)

c2 = c1.mark_text().encode(
    text='a')

c1 + c2

Проблема в том, что я хочу, чтобы c2 был слоем черных (не цветных) текстовых меток.

Я пробовал следующие варианты безуспешно:

c2 = c1.mark_text().encode(
    text='a',
    color=None
)

c2 = c1.mark_text().encode(
    text='a',
    color=alt.Color(field=None)
)

c2 = c1.mark_text().encode(
    text='a',
    color=alt.Undefined
)

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Ваше решение работает. Я добавляю еще один вариант для будущих зрителей, которые могут наткнуться на этот вопрос, желая указать цвета. Он должен явно указывать текст как «черный», используя alt.value('black') По общему признанию, «черный» - это не то же самое, что «отключение» кодировки, но это может быть то, что кто-то хочет для своего сюжета.

c2 = c1.mark_text().encode(
    text='a',
    color=alt.value('black')
)
0 голосов
/ 29 апреля 2018

Вы можете сбросить кодировку цвета в c2, используя alt.Undefined следующим образом:

c2.encoding.color = alt.Undefined

...