위성 데이터 세트 file here을 가지고 있는데, 나는 & lon과 오존 값을위한 2D 배열에 대한 그리드를 만들었습니다.basemap & contourf, Python
지도에서 데이터의 contourf를 플롯하기 위해 투영 좌표가 필요하다는 것을 알고 있지만 그리드가 정사각형이 아닌 (144x24) 길을 찾을 수는 없습니다. 지리적 영역 (0 ~ 360, -30 ~ 30)을 다루고 있으며 정사각형 픽셀이 필요합니다.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from mpl_toolkits.basemap import Basemap, cm
%matplotlib inline
path = '/home/rafaella/month_files_CSV/O3_COLUMNS_MATCHED_fv0005_200306.csv'
df = pd.read_csv(path, skiprows=1)
df = pd.read_csv(path, delim_whitespace=True)
lat = np.array(df['AVG_LAT'])
lon = np.array(df['AVG_LON'])
toc = np.array(df['TROP_COL'])
#new grid for lon[0,360] lat[-30,30]
lomin = 0
lomax = 360
lamin = -30
lamax = 30
stp = 2.5
loc_lon = np.zeros(int((lomax-lomin)/stp))
loc_lat = np.zeros(int((lamax-lamin)/stp))
for i in range(0,len(loc_lon)):
loc_lon[i] = i*stp +lomin
for j in range(0,len(loc_lat)):
loc_lat[j] = j*stp +lamin
mtoc_local = np.zeros((len(loc_lon),len(loc_lat)))
sdtoc_local = np.zeros((len(loc_lon),len(loc_lat)))
mtoc_local[:,:] = np.nan
sdtoc_local[:,:] = np.nan
for i in range (0, len(loc_lon)):
for j in range (0,len(loc_lat)):
ix = np.where((lon>=loc_lon[i])& (lat>=loc_lat[j]) & (lon<loc_lon[i]+stp) & (lat<loc_lat[j]+stp))[0]
mtoc_local[i,j]=np.nanmean(toc[ix])
sdtoc_local[i,j]=np.nanstd(toc[ix])
fig = plt.figure(figsize=(20, 5))
map = Basemap(llcrnrlon=0,llcrnrlat=-30, urcrnrlon=360.,urcrnrlat=30.,\
rsphere=(6378137.00,6356752.3142),\
resolution='l',projection='merc',\
lat_0=0,lon_0=-30.,lat_ts=30.)
map.drawcoastlines()
# draw parallels
map.drawparallels(np.arange(-30,30,10),labels=[1,1,0,1])
# draw meridians
map.drawmeridians(np.arange(-180,180,20),labels=[1,1,0,1])
map = plt.contourf(loc_lon, loc_lat , mtoc_local.T, vmin=210, vmax=350, cmap='RdPu')
plt.colorbar(orientation='horizontal', ticks=[200, 220, 240, 260, 280, 300, 320, 340])
plt.title('Tropical TOC monthly mean 06,2009')
plt.show()
그것은 아주 잘지도 또는 데이터 있지만 둘을 나타내는,
데이터를 게시하는 것은 매우 긴하지만 지금까지 내 코드입니다. 여기에 별도로 map
모두의 이미지가 내가 파이썬에 아주 새로운 오전, 한 달 전에 시작, 그래서 여전히 모든 기능과 라이브러리 나에게 익숙하지 않다.
처럼 보이는, 또는/toc 변수? [문제 재현] (https://stackoverflow.com/help/mcve) 샘플 데이터가 없으면 도움을주기가 매우 어렵습니다. –
물론, 문제는 투영 된 좌표와 같습니다. 데이터에 주어진 좌표를 사용하지 않고 그리드를 사용하고 있습니다. –
저는 Basemap이 [0,360]의 범위에서 경도를 좋아하지는 않지만 [-180, 180]이라고 생각합니다. 비록 이것이 당신의 문제의 근본 원인인지 확실하지 않습니다. –