我尝试将代码放入Jupyter笔记本电脑和Google Colab中,但是一旦我解决了代码中的所有错误,我不仅会在输出中出现空白屏幕。当我在将热图数据集放到地图上时仅在地图上运行代码时,它就可以工作。我使用https://alysivji.github.io/getting-started-with-folium.html来构造代码。 这是数据集的链接: https://data.cityofnewyork.us/Public-Safety/NYPD-Arrest-Data-Year-to-Date-/uip8-fykc
下面是我的完整代码。
here is what it looks like right now
import pandas as pd
pd.plotting.register_matplotlib_converters()
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
import numpy as np
import folium
from folium import features
from folium import plugins
from folium.plugins import HeatMap
from folium.plugins import MarkerCluster
print("Setup Complete")
crime_filepath = "arrestdata.csv"
crime_data = pd.read_csv (crime_filepath, index_col = "ARREST_DATE")
crime_data.head()
#this is the section that doesn't work
m = folium.Map([40.7128, -74.0060], zoom_start=10.3)
m #this and the line above properly creats a blank map
for index, row in crime_data.iterrows():
folium.CircleMarker([row['Latitude'],row['Longitude']],
radius=15,
fill_color="#3db7e4",).add_to(m)
my_map = crime_data[['Latitude', 'Longitude']].values
m.add_child(plugins.HeatMap(my_map, radius=15))
m
答案 0 :(得分:1)
我已经在您的链接中下载了数据集,并设法获得了热点图和标记集群。但是,在这种情况下,我确实只取了数据的子集Robbery只是为了检查代码是否有效,因为它的大小很大。数据框中的弹出窗口为ARREST_PRECINCT。由于您正在使用这些方法,因此我提供了两种创建热图的方法。
import pandas as pd
import folium
from folium import plugins
from folium.plugins import HeatMap
from folium.plugins import MarkerCluster
nypd_data = pd.re ad_csv('NYPD_Arrest_Data__Year_to_Date_.csv')
nypd_robbery = nypd_data.loc[nypd_data['OFNS_DESC']=='ROBBERY']
my_heatmap = folium.Map(location=[40.695792, -73.939096], zoom_start=8)
heat_data = [[row['Latitude'],row['Longitude']] for index, row in nypd_robbery.iterrows()]
# Plot it on the map
HeatMap(heat_data).add_to(my_heatmap)
# Display the map
my_heatmap
#or
my_map = folium.Map(location=[40.695792, -73.939096], zoom_start=8)
robbery_loc = nypd_robbery[['Latitude', 'Longitude']].values
# plot heatmap
my_map.add_child(plugins.HeatMap(robbery_loc, radius=15))
my_map
#MarkerCluster
map_rob = folium.Map(location=[40.695792, -73.939096], zoom_start=10, tiles='Stamen Terrain')
marker_cluster = folium.plugins.MarkerCluster().add_to(map_rob)
for index,row in nypd_robbery.iterrows():
lat = row["Latitude"]
lon = row["Longitude"]
name = row["ARREST_PRECINCT"]
folium.Marker([lat,lon],popup=name).add_to(marker_cluster)
map_rob
在此处输入代码