python 使用Altair显示英国的ChoroplethMap时出现问题

bvjxkvbb  于 2023-02-21  发布在  Python
关注(0)|答案(2)|浏览(130)

我正在下载数据集从两个不同的来源为英国地区。我正在使用牛郎星代码来显示ChoroplethMap。但这是我得到的两个数据集使用以下代码:

_map = alt.Chart(geo_uk, title='UK Map').mark_geoshape().encode().properties(width=500,height=300);

Link to used data source (GeoJson file)

b1uwtaje

b1uwtaje1#

我不经常使用altair,所以我不知道我的答案是否令你满意。我用给定geojson文件中的信息创建了一个Map。我的答案是基于这个答案的。如果这个Map不是你想要的,你可能需要在世界大地测量系统中转换它。

import altair as alt
import json

file = './data/Local_Authority_Districts__April_2019__UK_BGC_v2.geojson'
with open(file) as f:
    data_json = json.load(f) 

geo_uk = alt.Data(values=data_json, format=alt.DataFormat(property='features',type='json'))

_map = alt.Chart(geo_uk, title='UK Map').mark_geoshape(
).encode(
    color="properties.LAD19NM:N"
).project(
    type='identity', reflectY=True
).properties(width=800,height=600)
_map

qyzbxkaa

qyzbxkaa2#

要在Python Altair中创建一个地理Map,需要一个topoJSON文件来指定Map上区域的地理边界,以及一个包含每个区域的值的数据集。
获得topoJSON文件后,可以使用topo_feature()函数将其加载到Altair中。
您可以使用以下代码:

import pandas as pd
import altair as alt

df = # your DataFrame

url = "https://raw.githubusercontent.com/deldersveld/topojson/master/continents/europe.json"

data_map = alt.topo_feature(url, "continent_Europe_subunits")

alt.Chart(data_map).mark_geoshape().encode(
    tooltip='properties.geounit:N',
    color=alt.Color('color:Q')
).project('mercator').properties(
    width=500,
    height=300
).transform_lookup(
    lookup='properties.geounit',
    from_=alt.LookupData(df, 'Country', ['Country', 'color'])
)

使用transform_lookup()函数合并data_map数据集和数据集。您可以在this article中找到更多详细信息。

相关问题