我正在尝试使用我从这里下载的geojson数据文件绘制英国的等值线图:https://data.gov.uk/dataset/regions-december-2016-full-extent-boundaries-in-england2
以下是json数据的示例:
{
"type":"FeatureCollection",
"features":[
{
"type":"Feature",
"properties":{"objectid":1,"rgn16cd":"E12000001","rgn16nm":"North East","bng_e":417313,"bng_n":600358,"long":-1.72889996,"lat":55.2970314,"st_areashape":8675727008.425964,"st_lengthshape":795456.8022925043},
"geometry":{
"type":"MultiPolygon",
"coordinates":[[[[-2.0301237629331097,55.80991509288915],[-2.030069429494278,55.80991420787532],[-2.0300215494803053,55.80992140589199],[-2.0300040593387223,55.80993039246682],
我的csv文件如下所示: csv
我基本上只想用folium绘制出租车专栏。
问题是情节没有显示任何内容。我使用了以下代码。
import pandas as pd
import os
import json
# read in population data
df = pd.read_csv('map-data.csv')
import folium
from branca.utilities import split_six
state_geo = 'Regions_December_2016_Full_Extent_Boundaries_in_England.geojson'
m = folium.Map(location=[55, 4], zoom_start=5)
m.choropleth(
geo_data=state_geo,
data=df,
columns=['LA-Code', 'Taxi'],
key_on='feature.properties.rgn16cd',
fill_color='YlGn',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='h',
highlight=True
)
m
我认为问题与key_on参数有关。 我可以使用以下内容访问json文件中的正确代码:
geodata['features'][0]['properties']['rgn16cd']
它给了我正确的LA代码(E12000001),但它似乎没有 在上面的代码中工作。我也尝试在key_on参数中使用功能而不是功能,但这给了我一个错误
AttributeError:' NoneType'对象没有属性' get'
有没有人有任何想法是什么问题?感谢。
答案 0 :(得分:1)
来自folium library's documentation on github:
要在Jupyter笔记本中显示它,只需询问对象表示:
在:m
您的问题的根源可能是您不在Jupiter笔记本中。将地图另存为html文件并在浏览器中打开它可以正常工作,而无需更改json文件。请尝试以下代码:
import pandas as pd
import folium
# read in population data
df = pd.read_csv('map-data.csv')
state_geo = 'Regions_December_2016.geojson'
m = folium.Map(location=[55, 4], zoom_start=5)
m.choropleth(
geo_data=state_geo,
data=df,
columns=['LA-Code', 'Taxi'],
key_on='feature.properties.rgn16cd',
fill_color='YlGn',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='h',
highlight=True
)
m.save("my_map.html")
要从脚本中打开地图,您可以通过subprocess.call
或os.system
调用您的网络浏览器,在脚本末尾添加以下行:
import os
os.system("firefox my_map.html")