【问题标题】:My lines won't plot correctly in altair.chart.mark_geoshape我的线条无法在 altair.chart.mark_geoshape 中正确绘制
【发布时间】:2022-01-07 16:34:49
【问题描述】:

我需要从this website 绘制爱达荷州的河流

当我将它加载到 geopandas 并尝试通过 altair.Chart().mark_geoshape() 绘制它时,我的图表出现了一堆随机线,它们没有按预期绘制。我不知道发生了什么,因为我是地理空间数据方面的新手。

我遵循此示例中的模式https://altair-viz.github.io/gallery/london_tube.html,但无法绘制线条。

任何想法或我如何做到这一点都会有很大帮助!下面是我正在使用的代码。谢谢!

import altair as alt
import geopandas as gpd
from vega_datasets import data

states = alt.topo_feature(data.us_10m.url,'states')
hydro = gpd.read_file('drive/MyDrive/data_cse350/hyd250/hyd250.shp')

rivers = hydro.loc[hydro.FEAT_NAME.isin(['Snake River','Henrys Fork'])]

rchart = alt.Chart(rivers).mark_geoshape().encode(color = 'FEAT_NAME')

idaho = alt.Chart(states).mark_geoshape(fill = 'white',stroke = 'black').project(
    'albersUsa'
    ).transform_calculate(state_id = "(datum.id)"
    ).transform_filter((alt.datum.state_id)==16)

rchart+idaho```

If you can solve this, that would be great! Thank you for your help! I have already spent waaaayyy too many hours on getting this to work. 

【问题讨论】:

  • 我不习惯在 Altair 中使用地图,但您给出的示例是带有 topojson 线路信息的 topojson 底图。您可能需要使用相同的数据格式。

标签: python geopandas altair


【解决方案1】:

之所以没有画出来,是因为geopandas数据坐标系不同,需要转换成表示经纬度的格式。我对这种事情的经验是有限的,所以我不得不手工弄清楚。我实际上参考了爱达荷州的地图以确保它匹配。

import altair as alt
import geopandas as gpd
from vega_datasets import data

states = alt.topo_feature(data.us_10m.url,'states')
hydro = gpd.read_file('./data/hyd250/hyd250.shp')
hydro_trans = hydro.to_crs(epsg=4612)
rivers = hydro_trans.loc[hydro.FEAT_NAME.isin(['Snake River','Henrys Fork'])]

rchart = alt.Chart(rivers).mark_geoshape(
    filled=False,
    strokeWidth=2
).encode(
    color='FEAT_NAME'
).properties(
    width=600,
    height=300
)

idaho = alt.Chart(states).mark_geoshape(
    fill=None,
    stroke='black'
).project(
    'albersUsa'
    ).transform_calculate(
    state_id = "(datum.id)"
    ).transform_filter(
    (alt.datum.state_id)==16
)

rchart+idaho

【讨论】:

  • 谢谢谢谢谢谢谢谢!!!!!!!你是一个善良的人,一个学者!
  • 只是好奇,你知道如何检查它使用的坐标系吗?如果以后我再次​​遇到这个问题,我想知道如何检查坐标系类型。
  • hydro.crs 会根据目标 geopandas 数据框检查 crs。将显示各种信息。详情请见here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 2012-06-30
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 1970-01-01
  • 2021-11-22
相关资源
最近更新 更多