在 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.Undefined
在 c2
中重置颜色编码,如下所示:
c2.encoding.color = alt.Undefined
您的解决方案有效。我正在为未来的观众添加另一个选项,他们可能会偶然发现这个想要指定颜色的问题。使用 alt.value('black')
明确指定文本为 "black" 不可否认, 'black' 与 "unsetting" 编码不同,但这可能是某些人想要的情节.
c2 = c1.mark_text().encode(
text='a',
color=alt.value('black')
)
我有一个图表 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.Undefined
在 c2
中重置颜色编码,如下所示:
c2.encoding.color = alt.Undefined
您的解决方案有效。我正在为未来的观众添加另一个选项,他们可能会偶然发现这个想要指定颜色的问题。使用 alt.value('black')
明确指定文本为 "black" 不可否认, 'black' 与 "unsetting" 编码不同,但这可能是某些人想要的情节.
c2 = c1.mark_text().encode(
text='a',
color=alt.value('black')
)