如何将站名文本从 csv 文件绘制到地图

问题描述

我有一张带有站点位置的绘制地图(来自 CSV),但我发现很难使用站点名称(在所附 CSV 文件的第一列中称为“STATIONS”)向点添加文本。 下面是到目前为止编译的代码。谢谢。

'''

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as feature
import cartopy.io.shapereader as shapereader
from cartopy.mpl.ticker import LongitudeFormatter,LatitudeFormatter
import pandas as pd

countries = shapereader.natural_earth(resolution='10m',category='cultural',name='admin_0_countries')

# Find the Nigeria boundary polygon.
for country in shapereader.Reader(countries).records():
    if country.attributes['SU_A3'] == 'NGA':
        nigeria = country.geometry
        break
else:
    raise ValueError('Unable to find the NGA boundary.')

plt.figure(figsize=(20,10))
ax_map = plt.axes(projection=ccrs.PlateCarree())

ax_map.set_extent([-1,19,-1,17],ccrs.PlateCarree())

#ax_map.coastlines()
ax_map.add_feature(feature.COASTLINE,linewidth=.5)

ax_map.add_geometries([nigeria],ccrs.PlateCarree(),edgecolor='0.8',facecolor='none')

grid_lines = ax_map.gridlines(draw_labels=True)
grid_lines.top_labels = False
grid_lines.right_labels = False

lon_formatter = LongitudeFormatter(zero_direction_label=True)
lat_formatter = LatitudeFormatter()

ax_map.xaxis.set_major_formatter(lon_formatter)
ax_map.yaxis.set_major_formatter(lat_formatter)

df = pd.read_csv("met_ngstation.csv")

plt.scatter(df['LONG'],df['LAT'],color='red',marker='.',transform=ccrs.PlateCarree())

#plt.savefig('coastlines_ng.pdf')
#plt.savefig('coastlines_ng.png')

plt.show()

'''

CSV 文件链接https://drive.google.com/file/d/1_0b7z7WFfrs5eKY3t7-tykRoZ70Vqjkn/view?usp=sharing

解决方法

您可以使用下面的功能在地块上标记站点。

def labelLocation(x,y,val,ax):
    dt = pd.concat({'x': x,'y': y,'val': val},axis=1)
    for i,point in dt.iterrows():
        ax.text(point['x'],point['y'],str(point['val']))

labelLocation(df['LONG'],df['LAT'],df['STATIONS'],plt)

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...