gpt4 book ai didi

r - 绘制洋流的方位和速度

转载 作者:行者123 更新时间:2023-12-04 23:38:03 24 4
gpt4 key购买 nike

我有两个洋流的方位和速度数据矩阵

bearings <- matrix(data = c(170.0833, 175.6863, 182.3538, 180.3335, 170.8965, 
178.3276, 182.3693, 187.2196, 182.3533, 168.3498,
189.1664, 187.6813, 187.0393, 180.2259, 166.8412,
193.4223, 188.5367, 182.4128, 175.2626, 167.3058,
192.2930, 185.5073, 175.0302, 168.6284, 167.8392),
ncol = 5, nrow = 5, byrow = F)

speed <- matrix(data = c(0.1389173, 0.1585099, 0.1796583, 0.2021887, 0.2117295,
0.1196745, 0.1463118, 0.1637266, 0.1730471, 0.1804999,
0.1309982, 0.1546123, 0.1593298, 0.1517513, 0.1550037,
0.1621728, 0.1694083, 0.1606560, 0.1459710, 0.1457233,
0.1659898, 0.1535861, 0.1396885, 0.1294339, 0.1337756),
ncol = 5, nrow = 5, byrow = F)

我想用箭头绘制当前轴承的方向,而电流的大小/速度由箭头的长度表示,有点像这些 map :

enter image description here
取自 Shankar 等人的风应力图。 2002年

我知道包裹 oce 也许能够做类似的事情,但它特别适用于不同类型的海洋数据,而不是我正在使用的矩阵/数据框。

有人碰巧知道怎么做吗?我已经使用 raster() 将它们变成了光栅对象。来自 raster 的函数图书馆:
library(raster)
bearing.rst <- raster(bearings,
xmn = 66,
xmx = 67.3333,
ymn = 10.6667,
ymx = 12)
speed.rst <- raster(speed,
xmn = 66,
xmx = 67.3333,
ymn = 10.6667,
ymx = 12)

理想情况下,我会使用基本 R 图形,或者使用与基本 R 图形搭配得很好的包(例如,不是 ggplot2lattice )。

图表来自:

Shankar, D.、Vinayachandra, P.N. 和 Unnikrishnan, A.S. (2002)。北印度洋的季风流。海洋学进展,52:62-120。 doi: 10.1016/S0079-6611(02)00024-1

最佳答案

与基地 R:

plot(bearing.rst)  # your base map, I use this because I didn't have it

获取您的起始坐标:
arr.coor <- rasterToPoints(bearing.rst)
arr.coor <- cbind(arr.coor[,-3], bearing=c(t(bearings)), speed=c(t(speed)))

用三角函数计算你的精加工坐标:
x1 <- arr.coor[,1] + arr.coor[,4] * cos(arr.coor[,3]*pi/180)
y1 <- arr.coor[,2] + arr.coor[,4] * sin(arr.coor[,3]*pi/180)
arr.coor <- cbind(arr.coor, x1, y1)

绘制你的箭头:
arrows(arr.coor[,1],arr.coor[,2],arr.coor[,5],arr.coor[,6])

enter image description here

我猜同样的原理可以与 ggplot2 一起使用。这个想法是获得一张包含所有箭头起点和终点的表格。

关于r - 绘制洋流的方位和速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47752446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com