如何使用R绘制风向和风速(速度图)的地图

3
基本上,我有两个矩阵(u和v),包含经度和纬度方向上的风速(以及包含坐标的向量x和y)。我想制作一张地图,箭头指向结果方向,大小与风速成比例。此问题曾被提出:http://www.mail-archive.com/r-help@r-project.org/msg18875.html。 不幸的是,答案中给出的链接已失效。我尝试使用quiver函数,但无法使其正常工作。
以下是我的数据样式:
x=seq(10,15,by=0.25)
y=seq(40,50,by=0.25)
u=matrix(runif(length(x)*length(y),-2,3),nrow=length(y),ncol=length(y))
v=matrix(runif(length(x)*length(y),-2,3),nrow=length(y),ncol=length(y))
wind=list(u,v)

对于箭头函数:

library(pracma)
quiver(x=x, y=y, u=wind[[1]], v=wind[[2]])

这个值是原来的两倍:

Error: invalid graphics state

我假设u和v是错误的,也需要作为坐标。但是,对于包说明中给出的解释(u,v:起点的x、y坐标),我并不真正理解。

我看到matlab或python中可以获取更多关于箭头图的信息,但是我从未使用过这些工具,所以非常感谢提供有关在R中实现此内容的任何建议。


3
你看过这里的前两个例子吗? - Henrik
1个回答

8
x=seq(10,15,by=0.25)
y=seq(40,50,by=0.25)
u=matrix(runif(length(x)*length(y),-2,3),nrow=length(x),ncol=length(y))
v=matrix(runif(length(x)*length(y),-2,3),nrow=length(x),ncol=length(y))
#note that I corrected these

#melt for plotting
library(reshape2)
u <- melt(u,value.name = "u")
v <- melt(v,value.name = "v")
wind <- merge(u, v)
wind$x <- x[wind[,1]]
wind$y <- y[wind[,2]]


#plot
library(ggplot2)
library(grid)
scaler <- 1

p <- ggplot(wind, aes(x=x, y=y, xend=x+u*scaler, yend=y+v*scaler)) + geom_segment(arrow=arrow())
print(p)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接