【发布时间】:2018-10-23 11:53:14
【问题描述】:
我有两个向量表示散点图中的 x 和 y 坐标,每个 (x,y) 坐标都有一个第三变量 (z),表示从中绘制等高线的变量。示例数据如下:
df<-data.frame(x=runif(n=30,min=-6,max=6),
y=runif(n=30,min=-6,max=10),
z=seq(1,100,length.out=30))
我使用 R 包 akima 为等高线图生成 z 矩阵
library(akima)
M1 <- interp(x=df$x,y=df$y,z=df$z)
contour(x=M1$x,y=M1$y,z=M1$z)
我现在想绘制垂直于轮廓线的箭头,最好使用 R 包 pracma 中的函数“quiver”之类的东西,每个 (x,y) 处都有一个箭头的原点- 坐标,箭头指向轮廓线的渐变方向。有没有办法做到这一点?
到目前为止,我最好的想法是以某种方式提取轮廓线的 (x,y)-梯度,并将其用作 quiver 函数中的速度。
感谢您的帮助。
【问题讨论】:
-
您能否澄清一下:您希望将箭头附加到等高线上,还是在每个
(M1$x, M1$y)对上? -
好点。我希望每个 (M1$x,M1$y) 对都附上箭头
-
您可以使用栅格包“terrain”函数和“aspect”选项来获取高程栅格上某个点的角度。例如
plot(terrain(raster(M1),"aspect"))- 然后在点处对栅格进行采样,用正弦和余弦绘制箭头... -
@Spacedman 谢谢你的建议,我试试看