我有一個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