我的点数据包含lat
和lng
坐标。在每个点,都有一个特定的值,范围在0到100之间。我想使用rgl
包将其绘制为高度图。如果找到here
library(rgl)
data(volcano)
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point
open3d()
rgl.surface(x, y, z, color=col, alpha=0.75, back="lines")
但是,我不明白。这是我第一次使用rgl
并且不太明白这里提供了哪种数据(volcano
)。
我看过它,但我不明白......
1:nrow(z)
和1:ncol(z)
中的内容是什么?!为什么是间距? rgl.surface()
函数需要哪些输入数据?
当我的数据只有三个列lat
,lng
和value
时,如何使用代码?我试图替换
z <- myData$value
x <- myData$lat
y <- myData$lng
那不起作用。
答案 0 :(得分:1)
您找到的示例已超过6年。使用surface3d
或persp3d
,您将获得更好的结果;他们的帮助页面中有一些示例。 surface3d
的设置与x
,y
和z
的设置相同,然后使用
surface3d(x, y, z, color = col, back = "lines")
您的想法是网格上的点的x坐标是x
,y
中的y坐标和z
中的z坐标。您可以将它们作为矩阵给出(对于所有三个都是相同的形状),或者如果坐标在网格中的坐标相同,则将x
和y
作为向量。
该示例使用
x <- 10 * (1:nrow(z))
用x
填充(10, 20, 30, ...)
,每行z
一个条目。
答案 1 :(得分:0)
看起来z
必须是您的值的矩阵。它包含值的相对位置([1,1] = 200
将是3d绘图的一个角,它包含值200.您的点的位置包含在z
以及你的观点的价值。
> z[1:5,1:5]
[,1] [,2] [,3] [,4] [,5]
[1,] 200 200 202 202 202
[2,] 202 202 204 204 204
[3,] 204 204 206 206 206
[4,] 206 206 208 208 208
[5,] 208 208 210 210 210
x
和y
基本上是x轴和y轴的刻度。在这种情况下,它希望每个值均匀地相隔10米,这就是为什么我们有10米的间距调整。如果你的情况是这些点相距不超过10米,你可以通过调整这些x和y值来显示点到点的相对距离。
如果您将行更改为
x <- 5 * (1:nrow(z)) # 5 meter spacing (S to N)
你会看到所有点的位置仍然是正确的,但你通过告诉函数每个值之间的距离较小来将一个轴更靠近在一起。
在你的情况下,我会确保myData$value
是一个矩阵,如果不是,请尝试使用long / lat对其进行排序。希望这会有所帮助。