2016-04-05 3 views
3

Я пытаюсь сделать розу ветра из серии значений скорости ветра и направления. У меня есть представление о том, как написать необработанную программу для этого, как показано ниже:создание windrose из моих собственных данных

from windrose import WindroseAxes 
from matplotlib import pyplot as plt 
import matplotlib.cm as cm 
import numpy as np 
ws=[2.6,2.3,2.1,2.0,2.1,2.2,2.9,2.8,2.39,1.90,1.54,1.29,0.72,0.18,1.08] 
wd=[207,208,215,217,213,209,203,195,187,179,164,139,117,101,280] 
print "WD is ",wd 
print "WS is ",ws 
ax = WindroseAxes.from_ax() 
ax.bar(wd,ws, normed=True, opening=0.8, edgecolor='white') 
ax.set_legend() 
plt.show() 

Единственная проблема заключается в том, как я могу иметь программу для чтения моих данных в массивах Ws (WindSpeed) и БВ (ветра направление) в вышеуказанной программе.

Данные находятся в файле ascii с двумя столбцами, разделенными пробелом. Первая колонка - скорость ветра, а вторая колонка - направление ветра.

С учетом скорости ветра в первом столбце и направлении ветра во второй колонке. Вы знаете, как читать этот тип ветра с помощью python, чтобы столбец занимал массив ws, а столбец два занимает массив wd в сценарии выше?

ответ

1

Вы можете использовать np.loadtxt:

data = np.loadtxt('data.txt') 
ws = data[:, 0] 
wd = data[:, 1] 
1

Допустим, у вас есть файл с именем data.csv с на следующие содержания

2.6 207 
2.3 208 
2.1 215 
2.0 217 
2.1 213 
2.2 209 
2.9 203 
2.8 195 
2.39 187 
1.90 179 
1.54 164 
1.29 139 
0.72 117 
0.18 101 
1.08 280 

Вы можете использовать панд для чтения файла CSV

df = pd.read_csv("data.csv", names=["ws", "wd"], sep=" ") 
ws = df["ws"].values 
wd = df["wd"].values 

PS: windrose также может напрямую использовать Pandas DataFrame

0

в коде выше есть что-то не так:

ax = WindroseAxes.from_ax(): WindroseAxes не имеет атрибута 'from_ax'

, а также

ax.bar(wd,ws, normed=True, opening=0.8, edgecolor='white'): bar() недостающий 1 необходимый позиционную аргумент: 'вар'

внимательно посмотрите на него

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