2015-08-31 4 views
3

Возможно, это очень простой ответ на этот вопрос, и я только спрашиваю, как последнее средство, поскольку я обычно получаю ответы на них, но я не могу понять это или найти ответ. В основном я замышляю некоторые барьеры ветра в Python, но они указывают в неправильном направлении, и я не знаю, почему.Python barbs неправильное направление

Данные импортируются из файла и помещаются в списки, я нашел в другом столбце stackoverflow, как установить U, V для штрихов, используя np.sin и np.cos, что приводит к правильной скорости ветра, но направление неправильно. Я в основном рисую очень простой тефиграмму или Skew-T.

# Program to read in radiosonde data from a file named "raob.dat" 

# Import numpy since we are going to use numpy arrays and the loadtxt 
# function. 
import numpy as np 
import matplotlib.pyplot as plt 

# Open the file for reading and store the file handle as "f" 
# The filename is 'raob.dat' 

f=open('data.dat') 
# Read the data from the file handle f. np.loadtxt() is useful for reading 
# simply-formatted text files. 
datain=np.loadtxt(f) 
# Close the file. 
f.close(); 

# We can copy the different columns into 
# pressure, temperature and dewpoint temperature 

# Note that the colon means consider all elements in that dimension. 
# and remember indices start from zero 
p=datain[:,0] 
temp=datain[:,1] 
temp_dew=datain[:,2] 
wind_dir=datain[:,3] 
wind_spd=datain[:,4] 

print 'Pressure/hPa: ', p 
print 'Temperature/C: ', temp 
print 'Dewpoint temperature: ', temp_dew 
print 'Wind Direction/Deg: ', wind_dir 
print 'Wind Speed/kts: ', wind_spd 

# for the barb vectors. This is the bit I think it causing the problem 
u=wind_spd*np.sin(wind_dir) 
v=wind_spd*np.cos(wind_dir) 

#change units 
#p=p/10 
#temp=temp/10 
#temp_dew=temp_dew/10 

#plot graphs 
fig1=plt.figure() 
x1=temp 
x2=temp_dew 
y1=p 
y2=p 
x=np.linspace(50,50,len(y1)) 
#print x 
plt.plot(x1,y1,'r',label='Temp') 
plt.plot(x2,y2,'g',label='Dew Point Temp') 
plt.legend(loc=3,fontsize='x-small') 
plt.gca().invert_yaxis() 
#fig2=plt.figure() 
plt.barbs(x,y1,u,v) 
plt.yticks(y1) 
plt.grid(axis='y') 
plt.show() 

Заколки должны быть в основном в том же направлении, в котором вы можете видеть в направлении в градусах от данных.

Любая помощь приветствуется. Спасибо.

Вот данные, которые используются:

996 25.2 24.9 290 12 
963.2 24.5 22.6 315 42 
930.4 23.8 20.1 325 43 
929 23.8 20 325 43 
925 23.4 19.6 325 43 
900 22 17 325 43 
898.6 21.9 17 325 43 
867.6 20.1 16.5 320 41 
850 19 16.2 320 44 
807.9 16.8 14 320 43 
779.4 15.2 12.4 320 44 
752 13.7 10.9 325 43 
725.5 12.2 9.3 320 44 
700 10.6 7.8 325 45 
649.7 7 4.9 315 44 
603.2 3.4 1.9 325 49 
563 0 -0.8 325 50 
559.6 -0.2 -1 325 50 
500 -3.5 -4.9 335 52 
499.3 -3.5 -5 330 54 
491 -4.1 -5.5 332 52 
480.3 -5 -6.4 335 50 
427.2 -9.7 -11 330 45 
413 -11.1 -12.3 335 43 
400 -12.7 -14.4 340 42 
363.9 -16.9 -19.2 350 37 
300 -26.3 -30.2 325 40 
250 -36.7 -41.2 330 35 
200 -49.9 0 335 0 
150 -66.6 0 0 10 
100 -83.5 0 0 30 

Лиам

ответ

2
# for the barb vectors. This is the bit I think it causing the problem 
u=wind_spd*np.sin(wind_dir) 
v=wind_spd*np.cos(wind_dir) 

Вместо этого попробуйте:

u=wind_spd*np.sin((np.pi/180)*wind_dir) 
v=wind_spd*np.cos((np.pi/180)*wind_dir) 

(http://tornado.sfsu.edu/geosciences/classes/m430/Wind/WindDirection.html)

+0

«' np.sin' и 'np.cos' принимает вход как радианы" это предложение, которое вам не хватает в вашем ответе, иначе вы его нашли. –

Смежные вопросы