【问题标题】:How to plot Choropleth map with folium and geoJson with a undentifed feature.id?如何使用未识别的 feature.id 绘制带有 folium 和 geoJson 的 Choropleth 地图?
【发布时间】:2021-02-19 17:51:44
【问题描述】:

我正在按照本指南从 Folium 绘制等值线图: https://notebook.community/python-visualization/folium/examples/GeoJSON_and_choropleth

from branca.colormap import linear

colormap = linear.OrRd_03.scale(
    ecuador['Confirmed cases'].min(),
    ecuador['Confirmed cases'].max())

ecuador_dict=ecuador.set_index('Provinces')['Confirmed cases']

fec_map= folium.Map(zoom_start=6, tiles="OpenStreetMap", control_scale=True, location=[latitude_ec, longitude_ec])
folium.GeoJson(geojson_ec,
               name='Confirmed cases',
               style_function=lambda feature: {
                'fillColor'= colormap(ecuador_dict[features['properties.dpa_despro']]),
                'color': 'black',
                'weight': 2,
                'dashArray': '5, 5'}
                ).add_to(fec_map)
fec_map

GeoJSON:

geojson_ec = {'type': 'FeatureCollection',
        'features': [{'type': 'Feature',
                      'properties': {'id_prov': 1,
                                     'dpa_provin': '01',
                                     'dpa_despro': 'AZUAY',
                                     'dpa_valor': 0,
                                     'dpa_anio': '2012',
                                     'rei_codigo': '05',
                                     'ren_codigo': '01',
                                     'pee_codigo': '593',
                                     'codigo': 1,
                                     'codigo_1': 1,
                                     'nombre': 'AZUAY',
                                     'pob_mas': 337044,
                                     'pob_fem': 375083,
                                     'pob_tot': 712127,
                                     'si_lee': 591470,
                                     'no_lee': 51920,
                                     'total': 643390,
                                     'analfabeti': 6.7,
                                     'promedio_e': 9.01,
                                     'pobres_nbi': 338073,
                                     'no_pobres': 361875,
                                     'pob_nopob_': 699948,
                                     'densidad': 85.7,
                                     'edad_media': 28.85,
                                     'cartodb_id': 1,
                                     'created_at': '2015-04-20T23:35:12Z',
                                     'updated_at': '2015-04-21T16:01:08Z',
                                     }}]}

但是,我收到此错误:

File "<ipython-input-131-1cdbb903e2f9>", line 7
    'fillColor'= colormap(ecuador_dict[features['properties.dpa_despro']]),
               ^
SyntaxError: invalid syntax

请帮助我理解指南并设置正确的颜色图。

变量:

ecuador_dict=
Provinces
AZUAY                             10788.0
BOLÍVAR                            2120.0
CARCHI                             3080.0
CAÑAR                              2165.0
CHIMBORAZO                         2560.0
COTOPAXI                           4612.0
EL ORO                             6497.0
ESMERALDAS                         4324.0
GALÁPAGOS                           228.0
GUAYAS                            22588.0
IMBABURA                           4816.0
LOJA                               6375.0
LOS RÍOS                           4041.0
MANABÍ                            11464.0
MORONA SANTIAGO                    3015.0
NAPO                               1447.0
ORELLANA                           1972.0
PASTAZA                            2276.0
PICHINCHA                         60494.0
SANTA ELENA                        1796.0
SANTO DOMINGO DE LOS TSÁCHILAS     5322.0
SUCUMBÍOS                          2778.0
TUNGURAHUA                         6168.0
ZAMORA CHINCHIPE                   1582.0
Name: Confirmed cases, dtype: float64
<class 'pandas.core.series.Series'>

10788.0

由-r-beginners提出的解决方案:

fec_map= folium.Map(zoom_start=6, tiles="OpenStreetMap", control_scale=True, location=[latitude_ec, longitude_ec])
folium.GeoJson(geojson_ec,
               name='Confirmed cases',
               style_function=lambda feature: {
                'fillColor'= ecuador_dict[feature['properties']['dpa_despro']],
                'color': 'black',
                'weight': 2,
                'dashArray': '5, 5'}
                ).add_to(fec_map)
fec_map

结果:

文件“”,第 5 行 'fillColor'= ecuador_dict[特征['properties']['dpa_despro']], ^ SyntaxError: 无效语法

【问题讨论】:

  • 要解决错误,请尝试像这样修复它。style_function=lambda feature: {'fillColor': colormap(ecuador_dict[feature['properties']['dpa_despro']]
  • 不工作:文件“”,第 5 行 'fillColor'= colormap(ecuador_dict[feature['properties']['dpa_despro']]),^ SyntaxError : 无效语法
  • cmets 中显示的更正已根据您的问题中提供的数据进行并运行。该问题已使用更正的数据进行了更新。尝试使用更正的代码运行它。如果我的更正不正确,请纠正我。
  • 我添加到运行和显示我的错误。我不喜欢r-beginners。请帮帮我。
  • 有几个问题:首先,geojson 数据指定不正确。第二个是ecuador_dict得到了值,第三个是即使你得到了填充颜色,代表'AZUAY'区域的多边形数据不在'geojson'中。

标签: pandas geojson colormap choropleth


【解决方案1】:
fec_map.choropleth(
        geo_data=geojson_ec,
        name='choropleth',
        data=ecuador,
        columns=['Provinces','Confirmed cases'],
        key_on='feature.properties.dpa_despro',
        fill_color='OrRd', 
        fill_opacity=0.5, 
        line_opacity=0.2,
                )

fec_map

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多