用altai在单幅地图上绘制空间数据

2024-09-30 02:28:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在地图上绘制空间数据。我想使用streamlit,因为它似乎很容易使用,我想稍微探索一下。
首先,a尝试用他们的内置deck_gl-API绘制我的数据。这很有效,但是由于我需要绘制字形/图标,而且IconLayer还没有内置到streamlit中,所以我需要切换到另一个库。在

我已经读到Altair应该很适合我,而且它也得到了{}的良好支持。 但是,当我不使用vega_datasets中的一个时,我不知道如何用altair创建可视化。在

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

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

如何使用牵牛星创建这样的情节?

如有任何帮助或提示,我们将不胜感激!在

San Francisco Bay water Temperature plot


Tags: 数据api地图绘制内置图标datasetsvega
1条回答
网友
1楼 · 发布于 2024-09-30 02:28:20

如果您有一个带有纬度和经度列的pandas数据帧,那么您可以在Altair中使用latitudelongitude编码通道。这里有一个使用vega_数据集的示例(它看起来像您的数据)。在

import altair as alt
from vega_datasets import data

df = data.airports()
df = df[df.state=='TX']
df.reset_index(inplace=True)
^{pr2}$

table

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

chart

注意:确保您的latitude和{}数据在WGS-84中(爱普生:4326)投影。在

在你的数据中添加一个基础地图目前有点困难。我相信有人会想出一个很好的方法来使用Vega lite中的新的image mark(将包含在牛郎星4中),因为在Vega中已经有了一个有效的概念证明(issueeditor)。在

更新:

要向地图添加更多上下文,可以使用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

相关问题 更多 >

    热门问题