在 Altair 中将编码重置为空

Resetting an encoding back to null in Altair

我有一个图表 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
)

您可以使用 alt.Undefinedc2 中重置颜色编码,如下所示:

c2.encoding.color = alt.Undefined

您的解决方案有效。我正在为未来的观众添加另一个选项,他们可能会偶然发现这个想要指定颜色的问题。使用 alt.value('black') 明确指定文本为 "black" 不可否认, 'black' 与 "unsetting" 编码不同,但这可能是某些人想要的情节.

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