Pmapmesh在底图上

时间:2016-06-30 20:57:46

标签: python matplotlib matplotlib-basemap

我有很长的纬度和经度列表,最终目标是在北美地图上绘制每个纬度/经度对的出现次数。作为一个例子,我有一个名为sort_df的DataFrame,它看起来像:

longitude  -95  -94  -93  -92
latitude
43           0    4    8    3
44           7    3    0    0 

使用sort_df.values和pmeshcolor,我可以绘制数据。代码如下:

m.Basemap(llcrnrlon = -170, llcrnrlat = 10, urcrnrlon = -50, urcrnrlat = 80)
m.drawcoastlines()
m.drawstates()
ny = sort_df.shape[0]
nx = sort_df.shape[1]
lons, lats = m.makegrid(nx,ny)
x,y = m(lons,lats)
my_cmap = plt.get_cmap('rainbow')
my_cmap.set_under('white')
data = np.array(sort_df.values)
cs = m.pcolormesh(x,y,data,cmap = my_cmap, vmin = 1)
m.colorbar(cs,extend = 'min')
plt.show()

上面的代码生成了一个如下图: enter image description here

问题:sort_df定义的纬度/经度网格上应该只有颜色。

问题:如何使网格显示在地图上的正确位置?

1 个答案:

答案 0 :(得分:3)

你在转换lat-lon的同时制作了一个missprint。您的数组 memset(usedNumbers, 0, sizeof(usedNumbers)); lats为空。

您的代码的另一个问题是lons必须具有[nx-1,ny-1]的形状才能与data一起绘制(它在点之间绘制):

pcolormesh

enter image description here