用ggplot2包绘制风向风速玫瑰图

February 15, 2012
By

This post was kindly contributed by 数据科学与R语言 - go there to comment and to read the full post.

风向风速玫瑰图(wind rose)是气象学家常用的图形工具,描述了在一个特定的地点,其风速和风向是如何分布的。风向风速图实际上是一种条形图的扩展,它使用网格化的极坐标系统,用不同的方位来汇集风向及其频数,频率最大的方位,表示该风向出现次数最多。并且还用不同的颜色带来区别风速的大小。在本例中我们首先使用ggplot2包来绘制如下的风向风速图,再用专门工具进行示例。

#首先加载ggplot2扩展包
library(ggplot2)
set.seed(1234)
#随机生成100次风向,并汇集到16个区间内
dir <- cut_interval(runif(100,0,360),n=16)
#随机生成100次风速,并划分成4种强度
mag <- cut_interval(rgamma(100,15),4)
sample <- data.frame(dir=dir,mag=mag)
#将风向映射到X轴,频数映射到Y轴,风速大小映射到填充色,生成条形图后再转为极坐标形式即可
p <- ggplot(sample,aes(x=dir,y=..count..,fill=mag))
p + geom_bar()+ coord_polar()
在R中绘制风向风速图也有两种专门的工具,一个是circular包中的windrose函数,另一个是climatol包中的rosavent函数。

library(circular)
dir <- circular(runif(100,0,360),units='degrees')
mag <- rgamma(100,15)
sample <- data.frame(dir=dir,mag=mag)
res <- windrose(sample,template='geographics')



library(climatol)
data(windfr)
rosavent(windfr, 4, 4, ang=-3*pi/16, main="Annual windrose")


Tags: ,

Comments are closed.