代码之家  ›  专栏  ›  技术社区  ›  ilia timofeev

在牛郎星海图上绘制地质和数据有什么更简单的方法吗?

  •  2
  • ilia timofeev  · 技术社区  · 6 年前

    GeoDataFrame 在里面 Altair :

    import altair as alt
    import geopandas as gpd
    
    alt.renderers.enable('notebook')
    
    world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
    
    data  = alt.InlineData(values = world[world.continent=='Africa'].__geo_interface__, #geopandas to geojson
                           # root object type is "FeatureCollection" but we need its features
                           format = alt.DataFormat(property='features',type='json')) 
    alt.Chart(data).mark_geoshape(
    ).encode( 
        color='properties.pop_est:Q', # GeoDataFrame fields are accessible through a "properties" object 
        tooltip=['properties.name:N','properties.pop_est:Q']
    ).properties( 
    
        width=500,
        height=300
    )
    

    Result

    但如果我加上 Nan DateTime 价值观。

    1 回复  |  直到 6 年前
        1
  •  2
  •   ilia timofeev    6 年前
    1. 一开始你可以用 world = alt.utils.sanitize_dataframe(world) 转换具有JSON不兼容类型的列。
    2. 或者你可以用 gpdvega
    import altair as alt
    import geopandas as gpd
    import gpdvega 
    
    alt.renderers.enable('notebook')
    
    world = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))
    
    alt.Chart(world[world.continent=='Africa']).mark_geoshape(
    ).encode( 
        color='pop_est', 
        tooltip=['name','pop_est']
    ).properties( 
        width=500,
        height=300
    )
    

    result

    只是 pip install gpdvega import gpdvega . altair 将与 GeoDataFrame DataFrame . 详见 documentation