gpt4 book ai didi

python - 处理 Altair 分区统计图中的缺失值/空值

转载 作者:行者123 更新时间:2023-12-02 20:03:39 24 4
gpt4 key购买 nike

我使用美国州级数据在 Altair 中创建了一张分区统计图。但是,我没有某些州的数据。默认情况下,这些州根本不会出现在 map 上。这是一个示例图像:

enter image description here

我希望零状态在 map 上显示为灰色。 Altair 文档显示了另一张符合此描述的 map :

enter image description here

我的问题是如何使第一个 map 中带有空值的状态看起来像第二个 map 中的状态。我尝试了一些事情。这是我的原始 map 代码:

states = alt.topo_feature(data.us_10m.url, 'states')
source = df

alt.Chart(states).mark_geoshape().encode(
color=alt.Color('avg_prem:Q')
).transform_lookup(
lookup='id',
from_=alt.LookupData(source, 'id', ['avg'])
).project(
type='albersUsa'
).properties(
width=700,
height=450
)

这是第二张 map 的代码:

# US states background
alt.Chart(states).mark_geoshape(
fill='lightgray',
stroke='white'
).properties(
title='US State Capitols',
width=700,
height=400
).project('albersUsa')

我尝试的主要是将第二张 map 中的填充和描边参数应用到第一张 map 上:

alt.Chart(states).mark_geoshape(fill='lightgray',
stroke='white').encode(
color=alt.Color('avg_prem:Q')
).transform_lookup(
lookup='id',
from_=alt.LookupData(source, 'id', ['avg'])
).project(
type='albersUsa'
).properties(
width=700,
height=450
)

我可以通过这种方式更改带有值的状态轮廓的颜色,但无法用空值填充状态。

有没有好的方法可以解决 map 上丢失数据的问题?

最佳答案

一种方法是使用具有所需背景的分层图表。您没有提供数据,所以我实际上无法尝试,但它可能看起来像这样:

states = alt.topo_feature(data.us_10m.url, 'states')
source = df

foreground = alt.Chart(states).mark_geoshape().encode(
color=alt.Color('avg_prem:Q')
).transform_lookup(
lookup='id',
from_=alt.LookupData(source, 'id', ['avg'])
).project(
type='albersUsa'
).properties(
width=700,
height=400
)

background = alt.Chart(states).mark_geoshape(
fill='lightgray',
stroke='white'
).properties(
title='US State Capitols',
width=700,
height=400
).project('albersUsa')

background + foreground

编辑:另一种可能的方法是使用条件编码,类似于 https://vega.github.io/vega-lite/examples/point_invalid_color.html :

alt.Chart(states).mark_geoshape().encode(
color=alt.condition('datum.avg_prem !== null', 'avg_prem:Q', alt.value('lightgray'))
).transform_lookup(
lookup='id',
from_=alt.LookupData(source, 'id', ['avg'])
).project(
type='albersUsa'
).properties(
width=700,
height=400
)

关于python - 处理 Altair 分区统计图中的缺失值/空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55229651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com