下面我来详细讲解“Python使用folium excel绘制point”的完整攻略。
准备工作
使用pip
安装folium
、pandas
和openpyxl
三个库,它们分别用于在地图上标记点、读取Excel文件和操作Excel文件。
pip install folium pandas openpyxl
示例一:从Excel文件中读取数据并绘制标记点
首先,我们需要创建一个空白的地图对象,并设置初始的中心点坐标和缩放级别。这里使用的是中国地图,中心点坐标为[35, 105]
,缩放级别为4
。
import folium
m = folium.Map(location=[35, 105], zoom_start=4)
接下来,我们使用pandas
读取Excel文件中的数据,可以通过pd.read_excel()
方法来读取,其中sheet_name
参数是用于指定要读取的工作表名称,header
参数是用于指定包含列名称的行号,usecols
参数是用于指定要读取的列号。
import pandas as pd
df = pd.read_excel('data.xlsx', sheet_name='Sheet1', header=0, usecols=[0, 1, 2])
现在我们已经读取了Excel文件中的数据,接下来就是在地图上绘制标记点。这里使用的是Marker
对象来绘制点,其中location
参数是用于指定点的经纬度坐标,popup
参数是用于指定鼠标悬停在点上时显示的文本信息。
for _, row in df.iterrows():
folium.Marker(location=[row['latitude'], row['longitude']], popup=row['name']).add_to(m)
最后,展示地图并保存结果。
m.save('map.html')
示例二:从代码中构建数据并绘制标记点
除了从Excel文件中读取数据以外,我们还可以直接从代码中构建数据,并在地图上绘制标记点。首先,我们需要定义一个列表,其中包含多个字典,每个字典表示一个点的信息。
data = [
{'name': '北京', 'latitude': 39.9042, 'longitude': 116.4074},
{'name': '上海', 'latitude': 31.2304, 'longitude': 121.4737},
{'name': '广州', 'latitude': 23.1291, 'longitude': 113.2644},
{'name': '深圳', 'latitude': 22.5431, 'longitude': 114.0579},
{'name': '杭州', 'latitude': 30.2741, 'longitude': 120.1551},
]
接下来,和示例一类似,我们创建一个空白的地图对象,设置中心点坐标和缩放级别。
m = folium.Map(location=[30, 110], zoom_start=5)
再创建一堆标记点,并将它们添加到地图上。
for point in data:
folium.Marker(location=[point['latitude'], point['longitude']], popup=point['name']).add_to(m)
最后,展示地图并保存结果。
m.save('map.html')
这样,我们就完成了从Excel文件或代码中读取数据并在地图上绘制标记点的操作。完整代码可以参考下面的示例:
import folium
import pandas as pd
# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1', header=0, usecols=[0, 1, 2])
# 构造数据
data = [
{'name': '北京', 'latitude': 39.9042, 'longitude': 116.4074},
{'name': '上海', 'latitude': 31.2304, 'longitude': 121.4737},
{'name': '广州', 'latitude': 23.1291, 'longitude': 113.2644},
{'name': '深圳', 'latitude': 22.5431, 'longitude': 114.0579},
{'name': '杭州', 'latitude': 30.2741, 'longitude': 120.1551},
]
# 创建地图对象
m = folium.Map(location=[30, 110], zoom_start=5)
# 绘制标记点
for _, row in df.iterrows():
folium.Marker(location=[row['latitude'], row['longitude']], popup=row['name']).add_to(m)
for point in data:
folium.Marker(location=[point['latitude'], point['longitude']], popup=point['name']).add_to(m)
# 展示地图
m.save('map.html')
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用folium excel绘制point - Python技术站