更改 Altair 图例中的形状颜色
Change shape color in an Altair legend
考虑以下改编自 Altair website 的代码。
import altair as alt
import pandas as pd
source = pd.DataFrame({
'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})
brush = alt.selection(type='single')
alt.Chart(source).mark_point(filled=True).encode(
x='a',
y='b:Q',
shape='a',
color=alt.condition(brush,
alt.Color('b:N', legend=alt.Legend(columns=2, symbolFillColor='blue')),
alt.value(None)),
).add_selection(brush)
输出此图:
当我单击一个数据点时,所有其他数据点都会消失,这没关系。
问题在图例中,其中形状没有颜色,因为alt.value(None))
。
如何在保持选择的同时为图例中的形状设置不可见的颜色(当我单击一个数据点时使所有其他形状消失)?
我试过symbolFillColor='blue'
、symbolStrokeColor='blue'
,但它没有改变形状颜色。
谢谢:)
一种方法是设置默认标记颜色:
import altair as alt
import pandas as pd
source = pd.DataFrame({
'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})
brush = alt.selection(type='single')
alt.Chart(source).mark_point(filled=True, color='blue').encode(
x='a',
y='b:Q',
shape='a',
color=alt.condition(brush,
alt.Color('b:N', legend=alt.Legend(columns=2)),
alt.value(None)),
).add_selection(brush)
symbolFillColor
和 symbolStrokeColor
不起作用的原因是您将它们应用于颜色图例,这些默认颜色将被编码覆盖。
考虑以下改编自 Altair website 的代码。
import altair as alt
import pandas as pd
source = pd.DataFrame({
'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})
brush = alt.selection(type='single')
alt.Chart(source).mark_point(filled=True).encode(
x='a',
y='b:Q',
shape='a',
color=alt.condition(brush,
alt.Color('b:N', legend=alt.Legend(columns=2, symbolFillColor='blue')),
alt.value(None)),
).add_selection(brush)
输出此图:
当我单击一个数据点时,所有其他数据点都会消失,这没关系。
问题在图例中,其中形状没有颜色,因为alt.value(None))
。
如何在保持选择的同时为图例中的形状设置不可见的颜色(当我单击一个数据点时使所有其他形状消失)?
我试过symbolFillColor='blue'
、symbolStrokeColor='blue'
,但它没有改变形状颜色。
谢谢:)
一种方法是设置默认标记颜色:
import altair as alt
import pandas as pd
source = pd.DataFrame({
'a': ['A', 'B', 'B', 'B', 'E', 'F', 'G', 'H', 'I'],
'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
})
brush = alt.selection(type='single')
alt.Chart(source).mark_point(filled=True, color='blue').encode(
x='a',
y='b:Q',
shape='a',
color=alt.condition(brush,
alt.Color('b:N', legend=alt.Legend(columns=2)),
alt.value(None)),
).add_selection(brush)
symbolFillColor
和 symbolStrokeColor
不起作用的原因是您将它们应用于颜色图例,这些默认颜色将被编码覆盖。