简体   繁体   English

如何将GeoJsonTooltip添加到folium.Choropleth类中?

[英]How do you add GeoJsonTooltip to folium.Choropleth class in folium?

I have two choropleth layers in which I would like to add GeoJsonTooltip to but I keep receiving error TypeError: __init__() missing 1 required positional argument: 'text' 我想在其中添加两个Choropleth层,但我不断收到错误TypeError: __init__() missing 1 required positional argument: 'text' init TypeError: __init__() missing 1 required positional argument: 'text'

My current code is as follows. 我当前的代码如下。

import folium
import pandas as pd
import json

df_theft = pd.read_csv('PA_Theft.csv')
df_assualt = pd.read_csv('PA_Assualt.csv')

theft_json = json.load(open('theft_geojson.json'))
assualt_json = json.load(open('assualt_geojson.json'))

m = folium.Map(location=[41.20, -77.50], tiles="cartodbdark_matter", zoom_start=8.3)

theft = folium.Choropleth(
    geo_data=theft_json,
    data=df_theft,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='OrRd',
    fill_opacity=0.9,
    nan_fill_color='#ffffff',
    nan_fill_opacity=0.9,
    legend_name='Incident rate per 100,000 people',
    highlight=True,
    name='Theft'
).add_to(m)

folium.GeoJson(
    theft_json,
    tooltip=folium.features.Tooltip(fields=['feature.properties.county_name'])
).add_to(theft)

assualt = folium.Choropleth(
    geo_data=assualt_json,
    data=df_assualt,               
    columns=['county_name', 'rate'],
    key_on='feature.properties.county_name',
    fill_color='OrRd',
    fill_opacity=0.9,
    nan_fill_color='#ffffff',
    nan_fill_opacity=0.9,
    legend_name='Incident rate per 100,000 people',
    highlight=True,
    name='Assualt'
).add_to(m)

folium.GeoJson(
    assualt_json,
    tooltip=folium.features.Tooltip(fields=['feature.properties.county_name'])
).add_to(assualt)


folium.LayerControl().add_to(m) 
m.save('Crime_Map.html')

print('Map created.')

The end result I'm looking for is that when the user hovers over each county in PA the tooltip popup is activated and the following information from the geoJSON is displayed. 我要寻找的最终结果是,当用户将鼠标悬停在PA的每个县上时,将激活工具提示弹出窗口,并显示来自geoJSON的以下信息。

Example geojson 示例geojson

  "properties": {
        "county_name": "ADAMS",
        "incident": "Theft",
        "arrests": 24,
        "incident_count": 51,
        "incident_total": 75,
        "population": 102336,
        "rate": 73.2879924953096
      }

Two things: 两件事情:

  • You need to use the GeoJsonTooltip class to use the geojson fields. 您需要使用GeoJsonTooltip类来使用geojson字段。 The regular Tooltip class only works with simple text. 常规Tooltip类仅适用于简单文本。 That's the error you're getting. 那就是你得到的错误。
  • You can pass the GeoJsonTooltip to the GeoJson object that is created by Choropleth under the hood: GeoJsonTooltip(....).add_to(theft.geojson) 可以将通过GeoJsonTooltipGeoJson由创建的对象Choropleth罩下: GeoJsonTooltip(....).add_to(theft.geojson)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM