我有一个numpy数组precip_subset
,它的形状为(31, 60, 48)
。通过合并31个数据集创建了precip_subset
;数据集中的第一个变量表示日期,第二个表示经度,第三个表示纬度。在数据集的每个位置有一个独特的降水值;例如,print(precip_subset[1,0,32])
会给我一个值1.05
。如何使用底图绘制点
我会告诉我有我的代码迄今所做的:
data_low = precip_subset[(precip_subset > 0) & (precip_subset < 3.14062)]
anomalies = []
for val in data_low:
if val < 1:
anomalies.append(val)
print(anomalies)
data_low_indices1 = np.where((precip_subset > 0) & (precip_subset < 1))
data_low_indices2 = np.array(np.where((precip_subset > 0) & (precip_subset < 1))).T
anomalies_ind = []
for ind in data_low_indices2:
anomalies_ind.append(ind)
print(np.asarray(anomalies_ind))
基本上,这段代码我能够得到沉淀的价值,它们的指标的原始数据集,precip_subset
。从这里,我想用Basemap绘制这些数据 - 我想在地图上找到一个发现异常的点。 precip_subset
创建像这样:
data_path = r"C:\Users\matth\Downloads\TRMM_3B42RT\3B42RT_Daily.201001.7.nc4"
f = Dataset(data_path)
latbounds = [ -31 , -19 ]
lonbounds = [ 131, 146 ]
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin(np.abs(lats - latbounds[0]))
latui = np.argmin(np.abs(lats - latbounds[1]))
# longitude lower and upper index
lonli = np.argmin(np.abs(lons - lonbounds[0]))
lonui = np.argmin(np.abs(lons - lonbounds[1]))
precip_subset = f.variables['precipitation'][ : , lonli:lonui , latli:latui ]
这是我迄今所做的使用底图绘制数据:
m = Basemap(llcrnrlon=131.,llcrnrlat=-31,urcrnrlon=146.,urcrnrlat=-19.)
m.drawcoastlines()
m.drawparallels(np.arange(-90., 120., 30.), labels=[1, 0, 0, 0])
m.drawmeridians(np.arange(-180., 181., 45.), labels=[0, 0, 0, 1])
m.imshow(anomalies_ind)
plt.show()
但是,我得到的图像是不是我想什么(见图像如下)。
有谁知道我可以使用底图,与每个异常找到一个点绘制anomalies_ind
?
为什么没有人能回答这个问题 –
你没有包含任何数据。少量行的'anomalies_ind'的小样本就足够了。 – omdv