Alt 条件不适用于 choropleth 缺失值 N.A
Alt condition not working for choropleth missing values N.A
我正在使用配色方案 "blues"
绘制等值线图
我想要没有任何数据的县的默认颜色,即 N.A。
默认颜色有十六进制代码:#dbe9f6
我为此使用了 alt 条件,但它不起作用。
这是我的代码:
from altair import Scale,Color
fg = alt.Chart(us_counties).mark_geoshape(
stroke='black',
strokeWidth=0.05
).project(
type='albersUsa'
).transform_lookup(
lookup='id',
from_=alt.LookupData(fdf1, 'fips', ['Pill_per_pop'])
).encode(
color = alt.condition('datum.Pill_per_pop!==null',Color('Pill_per_pop:Q',scale=Scale(scheme='blues')),alt.value('#dbe9f6'))
).properties(
width=700,
height=400
)
我的输出是:
预期输出为:
我不确定为什么,但空值似乎破坏了条件编码。我能够通过使用计算转换将空值转换为负数,然后以此为条件来使其工作:
alt.Chart(us_counties).mark_geoshape(
stroke='black',
strokeWidth=0.05
).project(
type='albersUsa'
).transform_lookup(
lookup='id',
from_=alt.LookupData(fdf1, 'fips', ['Pill_per_pop'])
).transform_calculate(
Pill_per_pop='isValid(datum.Pill_per_pop) ? datum.Pill_per_pop : -1'
).encode(
color = alt.condition(
'datum.Pill_per_pop > 0',
alt.Color('Pill_per_pop:Q', scale=Scale(scheme='blues')),
alt.value('#dbe9f6')
)
).properties(
width=700,
height=400
)
我正在使用配色方案 "blues"
绘制等值线图
我想要没有任何数据的县的默认颜色,即 N.A。
默认颜色有十六进制代码:#dbe9f6
我为此使用了 alt 条件,但它不起作用。
这是我的代码:
from altair import Scale,Color
fg = alt.Chart(us_counties).mark_geoshape(
stroke='black',
strokeWidth=0.05
).project(
type='albersUsa'
).transform_lookup(
lookup='id',
from_=alt.LookupData(fdf1, 'fips', ['Pill_per_pop'])
).encode(
color = alt.condition('datum.Pill_per_pop!==null',Color('Pill_per_pop:Q',scale=Scale(scheme='blues')),alt.value('#dbe9f6'))
).properties(
width=700,
height=400
)
我的输出是:
预期输出为:
我不确定为什么,但空值似乎破坏了条件编码。我能够通过使用计算转换将空值转换为负数,然后以此为条件来使其工作:
alt.Chart(us_counties).mark_geoshape(
stroke='black',
strokeWidth=0.05
).project(
type='albersUsa'
).transform_lookup(
lookup='id',
from_=alt.LookupData(fdf1, 'fips', ['Pill_per_pop'])
).transform_calculate(
Pill_per_pop='isValid(datum.Pill_per_pop) ? datum.Pill_per_pop : -1'
).encode(
color = alt.condition(
'datum.Pill_per_pop > 0',
alt.Color('Pill_per_pop:Q', scale=Scale(scheme='blues')),
alt.value('#dbe9f6')
)
).properties(
width=700,
height=400
)