python画图利用excel文件中的站名、经度、纬度在图上对应的经纬度上添加站点名和点
时间: 2024-09-10 08:06:08 浏览: 20
在Python中,你可以使用matplotlib库来创建地图,并结合pandas读取Excel文件的数据。首先,你需要安装`openpyxl`库用于处理Excel文件,然后按照以下步骤操作:
1. 导入所需的库:
```python
import matplotlib.pyplot as plt
import pandas as pd
from geopy.geocoders import Nominatim
```
2. 使用`pandas`读取Excel文件:
```python
df = pd.read_excel('your_file.xlsx', sheet_name='Sheet1') # 更改为你实际的文件路径和工作表名称
```
3. 确保Excel文件中包含站名(name)、经度(longitude)和纬度(latitude)列。如果不是,则需要相应地调整。
4. 使用geopy的Nominatim服务将站名转换为经纬度坐标:
```python
geolocator = Nominatim(user_agent="geoapiExercises")
def get_location(row):
location = geolocator.geocode(row['name'])
if location:
return (location.latitude, location.longitude)
else:
print(f"无法找到地址:{row['name']}")
return None
# 使用apply函数应用get_location函数到DataFrame每一行
df['coordinates'] = df.apply(get_location, axis=1)
# 删除找不到位置的行,如果需要的话
df = df[df.coordinates.notna()]
```
5. 生成地图并标记站点:
```python
plt.figure(figsize=(10, 6))
world_map = plt.imread('worldmap.png') # 你可以从互联网下载世界地图作为背景图片
ax = plt.imshow(world_map, extent=[-180, 180, -90, 90], interpolation='bicubic')
for _, row in df.iterrows():
lat, lon = row['coordinates']
ax.plot(lon, lat, 'ro', markersize=5) # 圆形红点代表站点
plt.text(lon, lat, row['name'], fontsize=8, horizontalalignment='center', verticalalignment='bottom')
plt.title('站点分布')
plt.xlabel('经度')
plt.ylabel('纬度')
plt.show()
```