基于底图的Pcolormesh

2024-05-03 06:46:41 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

使用排序_数据框值pmeshcolor,我可以绘制数据。代码如下:

^{pr2}$

上面的代码生成的绘图如下所示: enter image description here

问题:在sort_df定义的lat/lon网格上应该只有颜色。在

问:如何使网格出现在地图上的正确位置?在


Tags: 数据网格df列表排序地图sort次数
1条回答
网友
1楼 · 发布于 2024-05-03 06:46:41

你在转换纬度时弄错了。数组lats和{}为空。在

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

import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
from pandas import DataFrame

m = Basemap(llcrnrlon = -170, llcrnrlat = 10, urcrnrlon = -50, urcrnrlat = 80)
m.drawcoastlines()
m.drawstates()

lon = np.array([-95,  -94,  -93,  -92, -91])
lat = np.array([43, 42, 41])
data = np.array([[0,4,8,3],[7,3,0,0]])
# you have to write just like here to convert coordinates
x,y = m(lon,lat)

my_cmap = plt.get_cmap('rainbow')
my_cmap.set_under('white')
cs = m.pcolormesh(x,y,data,cmap = my_cmap)
m.colorbar(cs, extend = 'min')
plt.show()

enter image description here

相关问题 更多 >