using python to draw maps

python
map
Published

August 10, 2022

import folium
world_map = folium.Map(location=[20.5937, 78.9629], zoom_start=4)
world_map
Make this Notebook Trusted to load map: File -> Trust Notebook

解决jupyter包中的一些问题

import pip
 
def install(packages):
    pip.main(['install', packages]) 
 
install('package_name')

Stamen Toner graph

stamen toner图可快速的实现可视化,生产高对比度的图

world_map2=folium.Map(location=[28,77],zoom_start=4,tiles="Stamen Toner")
world_map2
Make this Notebook Trusted to load map: File -> Trust Notebook

stamen Terrain图

world_map = folium.Map(location=[25,116.42], zoom_start=4, tiles = "Stamen Terrain")
world_map
Make this Notebook Trusted to load map: File -> Trust Notebook
latitude=25.04
longitude=116.04
sh=folium.Map(location=[latitude,longitude],zoom_start=10)
sh
Make this Notebook Trusted to load map: File -> Trust Notebook

地图的实际运用

#data import
import pandas as pd
df = pd.read_csv('data/Police_Department_Incidents_-_Previous_Year__2016_.csv')
df.head()
IncidntNum Category Descript DayOfWeek Date Time PdDistrict Resolution Address X Y Location PdId
0 120058272 WEAPON LAWS POSS OF PROHIBITED WEAPON Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED 800 Block of BRYANT ST -122.403405 37.775421 (37.775420706711, -122.403404791479) 12005827212120
1 120058272 WEAPON LAWS FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED 800 Block of BRYANT ST -122.403405 37.775421 (37.775420706711, -122.403404791479) 12005827212168
2 141059263 WARRANTS WARRANT ARREST Monday 04/25/2016 12:00:00 AM 14:59 BAYVIEW ARREST, BOOKED KEITH ST / SHAFTER AV -122.388856 37.729981 (37.7299809672996, -122.388856204292) 14105926363010
3 160013662 NON-CRIMINAL LOST PROPERTY Tuesday 01/05/2016 12:00:00 AM 23:50 TENDERLOIN NONE JONES ST / OFARRELL ST -122.412971 37.785788 (37.7857883766888, -122.412970537591) 16001366271000
4 160002740 NON-CRIMINAL LOST PROPERTY Friday 01/01/2016 12:00:00 AM 00:30 MISSION NONE 16TH ST / MISSION ST -122.419672 37.765050 (37.7650501214668, -122.419671780296) 16000274071000
df.shape
limit=100
df=df.iloc[0:limit,:]
df
IncidntNum Category Descript DayOfWeek Date Time PdDistrict Resolution Address X Y Location PdId
0 120058272 WEAPON LAWS POSS OF PROHIBITED WEAPON Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED 800 Block of BRYANT ST -122.403405 37.775421 (37.775420706711, -122.403404791479) 12005827212120
1 120058272 WEAPON LAWS FIREARM, LOADED, IN VEHICLE, POSSESSION OR USE Friday 01/29/2016 12:00:00 AM 11:00 SOUTHERN ARREST, BOOKED 800 Block of BRYANT ST -122.403405 37.775421 (37.775420706711, -122.403404791479) 12005827212168
2 141059263 WARRANTS WARRANT ARREST Monday 04/25/2016 12:00:00 AM 14:59 BAYVIEW ARREST, BOOKED KEITH ST / SHAFTER AV -122.388856 37.729981 (37.7299809672996, -122.388856204292) 14105926363010
3 160013662 NON-CRIMINAL LOST PROPERTY Tuesday 01/05/2016 12:00:00 AM 23:50 TENDERLOIN NONE JONES ST / OFARRELL ST -122.412971 37.785788 (37.7857883766888, -122.412970537591) 16001366271000
4 160002740 NON-CRIMINAL LOST PROPERTY Friday 01/01/2016 12:00:00 AM 00:30 MISSION NONE 16TH ST / MISSION ST -122.419672 37.765050 (37.7650501214668, -122.419671780296) 16000274071000
... ... ... ... ... ... ... ... ... ... ... ... ... ...
95 160014858 OTHER OFFENSES FRAUDULENT GAME OR TRICK, OBTAINING MONEY OR P... Wednesday 01/06/2016 12:00:00 AM 06:00 TARAVAL NONE 2000 Block of 29TH AV -122.486926 37.749084 (37.7490841729028, -122.486925960114) 16001485809024
96 160015163 NON-CRIMINAL AIDED CASE Wednesday 01/06/2016 12:00:00 AM 16:09 MISSION NONE 14TH ST / FOLSOM ST -122.415616 37.768536 (37.7685360123583, -122.41561633832) 16001516351040
97 160015276 BURGLARY BURGLARY, UNLAWFUL ENTRY Tuesday 01/05/2016 12:00:00 AM 20:00 PARK NONE 1000 Block of COLE ST -122.449752 37.764430 (37.7644297714074, -122.449751652563) 16001527605073
98 160015276 LARCENY/THEFT GRAND THEFT FROM UNLOCKED AUTO Tuesday 01/05/2016 12:00:00 AM 20:00 PARK NONE 1000 Block of COLE ST -122.449752 37.764430 (37.7644297714074, -122.449751652563) 16001527606224
99 160015282 LARCENY/THEFT GRAND THEFT FROM LOCKED AUTO Tuesday 01/05/2016 12:00:00 AM 17:00 TARAVAL NONE 0 Block of ARDENWOOD WY -122.472716 37.735268 (37.7352681469084, -122.472715759631) 16001528206244

可视化

可视化发生在2016年的事件,绘制地图从默认开始,选择旧金山的经纬度,然后将缩放级别初始化在12。

la=37.77
lo=-122.42
sanmap = folium.Map(location=[la,lo],zoom_start=12)
sanmap
Make this Notebook Trusted to load map: File -> Trust Notebook

将数据整合到地图上。可通过folium中的featuregroup()来完成。 可创建一个具有自己特征和样式的特征组并将其添加到地图上。

incidents=folium.map.FeatureGroup()
for lat,lng, in zip(df.Y,df.X): #zip 接受一系列可迭代的对象作为参数,将对象中对应的元素打包一个tuple(元组)
    incidents.add_child(
        folium.CircleMarker(
            [lat,lng],
            radius=5,
            color="yellow",
            fill=True,
            fill_color="blue",
            fill_opacity=0.6
    ))
sanmap.add_child(incidents) #add_child 是将子元素添加到原来的部分
Make this Notebook Trusted to load map: File -> Trust Notebook
for lat, lng in zip(df.Y, df.X):
    incidents.add_child(
        folium.CircleMarker(
            [lat, lng],
            radius=5,
            color='yellow',
            fill=True,
            fill_color='blue',
            fill_opacity=0.6
))
latitudes = list(df.Y)
longitudes = list(df.X)
labels = list(df.Category)
for lat, lng, label in zip(latitudes, longitudes, labels):
    folium.Marker([lat,lng], popup=label).add_to(sanmap)    
sanmap.add_child(incidents)
Make this Notebook Trusted to load map: File -> Trust Notebook

删除位置标记

sanmap=folium.Map(location=[la,lo],zoom_start=12)
for lat,lng, label in zip(df.Y,df.X,df.Category):#遍历所有的标记
    folium.CircleMarker(
        [lat, lng],
        radius=5,
        color="yellow",
        fill=True,
        popup= label,#栈中弹出所有的label
        fill_color="blue",
        fill_opacity=0.6
    ).add_to(sanmap)
sanmap
Make this Notebook Trusted to load map: File -> Trust Notebook