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

问题描述 投票:2回答:1

我有一些关于特内里费岛某些站点的气象数据(此数据框在该岛的某些点具有纬度,经度和温度)(数据源是AEMET opendata,因此应该是值得信赖的)]

我已经成功绘制了底图,但是当我想在底图上的数据框中绘制点时,结果真的很奇怪。这里有我的数据:

enter image description here

我改变了顺序,所以当我使用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()

结果给了我:

enter image description here

但是,我只想在其位置上绘制点,例如,如果该点在坐标x,y中,则应该只在地图上此位置上出现一点。

有人伸出援手吗?

谢谢!

python dictionary matplotlib matplotlib-basemap imshow
1个回答
1
投票

检查此代码:

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()

提供此地图:

enter image description here

您使用了imshow(),但是此功能对于从NxM矩阵绘制图像很有用,因此您将始终获得一个彩色矩形,就像在紫色图像中一样。您具有x-ylon-lat)坐标格式的数据,因此您可以绘制散点图,像我的代码一样在地图上的这些点上显示温度,在这些温度下,测量。如果您想要一个分布式彩色地图(用技术术语表示,则是[[温度场),如下所示:

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.