用我自己的数据制作风玫瑰
Posted
技术标签:
【中文标题】用我自己的数据制作风玫瑰【英文标题】:making windrose from my own data 【发布时间】:2016-07-24 17:11:36 【问题描述】:我正在尝试根据一系列风速和方向值制作风玫瑰图。我知道如何编写用于执行此操作的原始程序,如下所示:
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(风速)和 wd(风向)中。
数据位于 ascii 文件中,两列由空格分隔。第一列是风速,第二列是风向。
第一列是风速,第二列是风向。你知道如何使用python读取这种类型的风,以便在上面的脚本中第一列占用ws数组,第二列占用wd数组吗?
【问题讨论】:
【参考方案1】:你可以使用np.loadtxt
:
data = np.loadtxt('data.txt')
ws = data[:, 0]
wd = data[:, 1]
【讨论】:
【参考方案2】:假设您有一个名为 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
您可以使用 Pandas 读取 CSV 文件
df = pd.read_csv("data.csv", names=["ws", "wd"], sep=" ")
ws = df["ws"].values
wd = df["wd"].values
PS:windrose也可以直接使用Pandas DataFrame
【讨论】:
【参考方案3】:上面的代码有问题:
ax = WindroseAxes.from_ax()
:WindroseAxes
没有属性'from_ax'
还有
ax.bar(wd,ws, normed=True, opening=0.8, edgecolor='white')
:
bar()
缺少 1 个必需的位置参数:'var'
仔细看看
【讨论】:
以上是关于用我自己的数据制作风玫瑰的主要内容,如果未能解决你的问题,请参考以下文章