gpt4 book ai didi

python - 使用 Altair 在单个 map 上绘制空间数据

转载 作者:行者123 更新时间:2023-12-01 00:17:16 25 4
gpt4 key购买 nike

我想在 map 上绘制空间数据。我想使用 streamlit 因为它似乎很容易使用,而且我想稍微探索一下。
首先尝试使用内置的 deck_gl-API 绘制我的数据。这工作得很好,但由于我需要绘制字形/图标,并且 IconLayer 尚未内置到 streamlit 中,所以我需要切换到另一个库。

我了解到 Altair 应该很适合我,而且 streamlit 也很好地支持它。但是,当我不使用 vega_datasets 之一时,我无法弄清楚如何使用 altair 创建可视化。

我的数据位于具有以下结构的数据框中:

|   latitude   |   longitude   |   temperature   |  
| ------------ | ------------- | --------------- |
| -122.23123 | 38.2321 | 23 |
| -122.2321 | 28.2342 | 25 |

如何使用 Altair 创建这样的绘图?

非常感谢任何帮助或提示!

San Francisco Bay water Temperature plot

最佳答案

如果您有一个带有纬度和经度列的 pandas DataFrame,那么您可以使用 Altair 中的纬度经度 编码 channel 。这是使用 vega_datasets 的示例(它看起来像您的数据)。

import altair as alt
from vega_datasets import data

df = data.airports()
df = df[df.state=='TX']
df.reset_index(inplace=True)
df.head()

table

alt.Chart(df).mark_point().encode(
latitude='latitude',
longitude='longitude',
color='index'
)

chart

注意:确保您的纬度经度数据采用 WGS-84 (EPSG:4326) 投影。

目前向数据添加 basemap 有点困难。我确信有人会用新的image mark想出一个好方法。在 Vega-lite(将包含在 Altair 4 中)中,因为 Vega(issueeditor)和 Vega-Lite(issueeditor)中已经存在有效的概念验证。

更新:

要向 map 添加更多上下文,您可以使用 geopandas 添加其他形状,如下所示:

import geopandas as gpd
gdf = gpd.read_file('https://raw.githubusercontent.com/python-visualization/folium/master/tests/us-states.json', driver='GeoJSON')
gdf = gdf[gdf.id=='TX']

base = alt.Chart(gdf).mark_geoshape(
stroke='gray',
fill=None
)

pts = alt.Chart(df).mark_point().encode(
latitude='latitude',
longitude='longitude',
color='index'
)

base + pts

context map

关于python - 使用 Altair 在单个 map 上绘制空间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59238080/

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