2017-03-06 11 views
0

떨리는 플롯을 사용하여 세계의 작은 구역에 표시하려고하는 방향의 글로벌 데이터 세트가 있습니다. 화살표는 플롯에 표시되지 않습니다. 각 데이터 포인트에 점 만 표시됩니다. 내 코드가 생성 된 그림과 함께 아래에 표시됩니다. 화살표를 표시하려면 어떻게해야합니까?플롯에 기본 맵 떨림 화살표가 표시되지 않습니다.

from netCDF4 import Dataset 
import datetime 
from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt 
import cPickle as pickle 
import numpy as np 

file_name = 'file.nc' 
file2 = Dataset(file_name, mode='r') 

lons2 = file2.variables['lon'][:] 
lats2 = file2.variables['lat'][:] 
times2 = file2.variables['time'][:] 
wind_dir = file2.variables['wind_dir'][:] 

#limits for the plot 
#longitudes 
x1 = 5 
x2 = 7 
#latitudes 
y1 = 41 
y2 = 43.4 

plt.figure() 
map = Basemap(resolution='f',projection='merc',area_thresh = 0.1, llcrnrlat=y1,urcrnrlat=y2,llcrnrlon=x1,urcrnrlon=x2,lat_ts=(x1+x2)/2) 
map.drawcountries(linewidth=0.5) 
map.drawcoastlines(linewidth=0.5) 
map.drawmapboundary(fill_color='aqua') 
map.fillcontinents(color='coral',lake_color='aqua') 

x,y = map(lons2,lats2) 
map.quiver(x,y,np.cos(np.deg2rad(wind_dir)),np.sin(np.deg2rad(wind_dir)),edgecolor='k', facecolor='white', linewidth=.5) 

Quiver plot - no arrows는 또한 관련 영역 (코드 아래 참조)의 한 점에 대한 떨림 플롯을 생성하고 화살표가 플롯 팅되었다. 위의 코드가 만족스럽지 않은데 왜 이것이 원하는 결과를 얻는 지 혼란 스럽습니다. enter image description here

target_lat = 43 
target_lon = 6.35 
diff = 1000 
for i in range(3264): 
    for j in range(82): 
     lat = lats2[i,j] 
     lon = lons2[i,j] 
     lat_d = target_lat - lat 
     lon_d = target_lon - lon 
     diff_n = np.sqrt(lat_d**2 + lon_d**2) 
     if diff_n < diff: 
      diff = diff_n 
      time_ix = i 
      space_ix = j 

x_t, y_t = map(lons2[time_ix,space_ix],lats2[time_ix,space_ix]) 
map.quiver(x_t,y_t,np.cos(np.deg2rad(wind_dir[time_ix,space_ix])),np.sin(np.deg2rad(wind_dir[time_ix,space_ix])),edgecolor='k', facec`olor='white', linewidth=.5) 

plt.show() 
file2.close() 

답변

1

내 문제를 해결 한 떨림 기능에

scale=10 

추가 (그림 참조).