2017-10-17 193 views
0

我正在使用Folium绘制主要的地震图。我能够绘制所有实例,其中约25000个实例。但地图开始显得非常笨拙。我用下面的代码:我如何在Folium中实现这一点?

map1 = folium.Map(location=[80., -180], zoom_start=1) 
def color(magnitude): 
if magnitude<6: 
    col='green' 
elif [(magnitude>6)&(magnitude<7.5)]: 
    col='yellow' 
else: 
    col='red' 
return col 
fg=folium.FeatureGroup(name="Earthquake Locations") 
for latitude,longitude,magnitude in zip(earthquakes['Latitude'][:30],earthquakes['Longitude'][:30],earthquakes['Magnitude'][:30]): 
fg.add_child(folium.Marker(location=[latitude,longitude],popup=(folium.Popup(magnitude)),icon=folium.Icon(color=color(magnitude)))) 
map1.add_child(fg) 

现在我要让剧情看起来像在下述R笔记本的第一条曲线: Notebook

有人可以帮助我实现这样一个情节,在个人点聚集,当我们缩放,点出现。

谢谢

回答

1

是的,你可以。 MarkerCluster是你追求的

给这个一抡

import folium 
from folium.plugins import MarkerCluster 

map1 = folium.Map(location=[80., -180], zoom_start=1) 

def color(magnitude): 
    if magnitude<6: 
     col='green' 
    elif [(magnitude>6)&(magnitude<7.5)]: 
     col='yellow' 
    else: 
     col='red' 
    return col 

map1.add_child(MarkerCluster(locations=list(zip(earthquakes['Latitude'], 
           earthquakes['Longitude'])), 
           popups=earthquakes['Magnitude'].astype(str), 
           icons=[color(m) for m in earthquakes['Magnitude']])) 

map1 

enter image description here

+0

它的工作..!谢谢 – user517696

+0

对,很好 –

1

由Bob Haffer代码也工作。我试图调整四周,又写了一段代码:

import folium 
import folium.plugins 
map1 = folium.Map(width=1000,height=500,location=[80, -180],tiles='CartoDB dark_matter',zoom_start=1) 
def color(magnitude): 
if magnitude<6: 
    col='green' 
else: 
    col='red' 
return col 
marker_cluster = folium.plugins.MarkerCluster().add_to(map1) 
for point in locationlist.index: 
    folium.Marker(list(locationlist.loc[point].values),popup='Magnitude:'+str(locationlist_pop[point]),icon=folium.Icon(color=color(locationlist_pop[point]))).add_to(marker_cluster) 
marker_cluster = folium.plugins.MarkerCluster().add_to(map1) 
map1 

Output