尝试在 BASEMAP 上绘制数据点 (Python)

Trying to plot DATA POINTS on BASEMAP (Python)

我有一些关于特内里费岛一些站点的气象数据(这个Dataframe有岛上某些点的纬度,经度和温度)(数据来源是AEMET opendata,所以他们应该是值得信赖的)

我已经成功地绘制了 Basemap,但是当我想在 Basemap 上绘制我的 Dataframe 中的点时,这真的很奇怪。
这是我的数据:

我更改了顺序,所以当我使用 imshow 时,顺序是 x、y、温度,其中 x 是纬度,y 是经度。

绘制我写的地图:

m = Basemap(llcrnrlon=-17,llcrnrlat=27.8,urcrnrlon=-16,urcrnrlat=28.7,resolution='i',projection='merc')


im = m.imshow(temp, cmap='BuPu')


cbi=plt.colorbar(im,shrink=0.7,format='%.1f')


plt.show()

结果给我:

但是,我只想在它们的位置上绘制点,例如,如果点在坐标 x,y 中,它应该只在地图中的这个位置上出现一个小点。

有帮助吗?

谢谢!

检查此代码:

import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

df = pd.read_csv('data.csv')

m = Basemap(llcrnrlon = -17, llcrnrlat = 27.8, urcrnrlon = -16, urcrnrlat = 28.7, resolution = 'i', projection = 'merc')
m.drawcoastlines(color = 'black')

x, y = m(list(df['x']), list(df['y']))
m.scatter(x, y,
          c = df['temperatura'],
          s = 100,
          cmap = 'RdBu_r')

plt.colorbar()
plt.show()

给出这张地图:

您使用了 imshow(),但此函数对于从 NxM 矩阵绘制图像很有用,因此您总是会得到一个彩色矩形,就像您的紫色图像一样。
您有 x-y (lon-lat) 坐标格式的数据,因此您可以绘制散点图,显示地图上那些点的温度,例如我的代码确实如此,在测量这些温度的地方。
如果你想要一个分布式彩色地图(在技术上是 温度场 ),像这样:

你需要像 meshgrid 这样的分布式数据。