簡體   English   中英

Folium Choropleth地圖標記不起作用

[英]Folium Choropleth map marker is not working

我正在嘗試關注Domino實驗室的博客文章“使用Folium創建交互式犯罪地圖”。 而且我發現代碼庫太舊,無法運行Folium的Choropleth地圖標記。 盡管Domino平台上的舊版本似乎可以正常使用(2015),但最新的Ipython Notebook不起作用。 所以我猜Folium改變了標記物? 我試圖找到更新,但找不到。 有人熟悉這個圖書館嗎? 如果是這樣,請給我建議。

我的代碼如下:

from IPython.display import HTML

def display(m, height=500):
    """Takes a folium instance and embed HTML."""
    m._build_map()
    srcdoc = m.HTML.replace('"', '"')
    embed = HTML('<iframe srcdoc="{0}" '
                 'style="width: 100%; height: {1}px; '
                 'border: none"></iframe>'.format(srcdoc, height))
    return embed

import folium  
import pandas as pd

SF_COORDINATES = (37.76, -122.45)  
crimedata = pd.read_csv('data/SFPD_Incidents_-_Current_Year__2015_.csv')

#for speed purposes
MAX_RECORDS = 1000

#create empty map zoomed in on San Francisco
map = folium.Map(location=SF_COORDINATES, zoom_start=12)

#add a marker for every record in the filtered data, use a clustered view
for each in crimedata[0:MAX_RECORDS].iterrows():  
    map.simple_marker(
        location = [each[1]['Y'],each[1]['X']], 
        clustered_marker = True)

display(map)  

#definition of the boundaries in the map
district_geo = r'data/sfpddistricts.json'

#calculating total number of incidents per district
crimedata2 = pd.DataFrame(crimedata['PdDistrict'].value_counts().astype(float))  
crimedata2.to_json('data/crimeagg.json')  
crimedata2 = crimedata2.reset_index()  
crimedata2.columns = ['District', 'Number']

#creation of the choropleth
map1 = folium.Map(location=SF_COORDINATES, zoom_start=12)  
map1.geo_json(geo_path = district_geo,  
              data_out = 'data/crimeagg.json', 
              data = crimedata2,
              columns = ['District', 'Number'],
              key_on = 'feature.properties.DISTRICT',
              fill_color = 'YlOrRd', 
              fill_opacity = 0.7, 
              line_opacity = 0.2,
              legend_name = 'Number of incidents per district')

display(map1)  

不確定您是說標記(彈出窗口)還是choropleth方法本身不起作用?

不推薦使用map1.geo_json()方法(請參見此處 )。

而是嘗試map1.choropleth(geo_path = district_geo,
data_out = 'data/crimeagg.json', data = crimedata2, columns = ['District', 'Number'], key_on = 'feature.properties.DISTRICT', fill_color = 'YlOrRd', fill_opacity = 0.7, line_opacity = 0.2, legend_name = 'Number of incidents per district')
map1.choropleth(geo_path = district_geo,
data_out = 'data/crimeagg.json', data = crimedata2, columns = ['District', 'Number'], key_on = 'feature.properties.DISTRICT', fill_color = 'YlOrRd', fill_opacity = 0.7, line_opacity = 0.2, legend_name = 'Number of incidents per district')

map.choropleth方法對我map.choropleth ,但是不知道它們是否解決了choropleth映射的彈出問題。 希望這可以幫助!

mapObject.choropleth方法正在被描述。

folium.GeoJson是根據此github問題建議的方法: https : //github.com/python-visualization/folium/issues/589

該問題中的注釋鏈接到此示例,該示例顯示了如何構建choropleth: http ://nbviewer.jupyter.org/github/python-visualization/folium/blob/master/examples/GeoJSON_and_choropleth.ipynb?flush_cache=true

TLDR

  • geo_json替換GeoJson

  • 對於像fill_color這樣的參數,請在style_function字典kwarg中使用fillColor: <hex_color>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM