我有一些关于特内里费岛某些站点的气象数据(此数据框在该岛的某些点具有纬度,经度和温度)(数据源是AEMET opendata,因此应该是值得信赖的)]
我已经成功绘制了底图,但是当我想在底图上的数据框中绘制点时,结果真的很奇怪。这里有我的数据:
我改变了顺序,所以当我使用imshow时,顺序是x,y,temperature,其中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
这样的分布式数据。