代码之家  ›  专栏  ›  技术社区  ›  user517696

我如何在Folium中实现这一点?

  •  0
  • user517696  · 技术社区  · 8 年前

    我正在使用Folium绘制大地震。我能画出所有的例子,大约25000个。但是地图开始看起来很笨拙。我使用了以下代码:

    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)
    

    Notebook .

    有人能帮我绘制这样一个图吗?在这个图中,各个点都聚集在一起,当我们缩放时,这些点就会显示出来。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Bob Haffner    8 年前

    是的,你可以。 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

        2
  •  1
  •   user517696    8 年前

    鲍勃·哈弗的代码也起了作用。我试着调整一下,然后写了另一段代码:

    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