尝试在 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
这样的分布式数据。
我有一些关于特内里费岛一些站点的气象数据(这个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
这样的分布式数据。