R中的曲面图类似于gnuplot中的曲线图

时间:2011-03-07 13:29:16

标签: r gnuplot

我最近开始使用R语言,现在我在大多数2D图中使用R.现在,我想用R来生成3d图。我有来自工具的x,y,z数据,直到现在我在gnuplot中使用splot来生成表面图。我想用R来生成类似于gnuplot给出的一个splot的曲面图。我看到的问题是,为了生成3d图,R要求数据采用矩阵格式,但我的数据不是那种格式。我的问题是,如果gnuplot能够从数据生成一个图,为什么R不能这样做。我相信我错过了什么,请帮帮我

这是gnuplot

的情节

Surface plot from GNU plot

这是数据

17.46 537.74 0.8
18.36 537.74 1.6
19.26 537.74 1.3
19.395 537.74 1.7
21.015 537.74 1.9
35.46 475.26 1.2
36.36 475.26 0.8
37.395 475.26 0.9
39.96 475.26 0.6
43.56 475.26 1

3 个答案:

答案 0 :(得分:3)

我是一个raster包粉丝,这已经不是什么秘密了。它附带一个使用rgl包的绘图方法。这些图像非常清晰。

这是来自?raster::plot3D的示例 enter image description here

修改

以下是如何使用具有三列的矩阵绘制曲面的示例。这个例子看起来像真人战斗中的阶段死亡陷阱。如果你正在寻找内核平滑,那么这是值得的。

library(rgl)
library(raster)
x <- sample(-500:500, 1000, replace = TRUE)
y <- sample(-500:500, 1000, replace = TRUE)
z <- rnorm(500, 10, 20)
df <- cbind(x, y, z)

rst <- raster(ncols = 100, nrows = 100, xmn = -100, xmx = 100, ymn = -100, ymx = 100)
rst2 <- rasterize(x = df[,1:2], y = rst, df[, 3])
plot3D(rst2)

enter image description here

答案 1 :(得分:1)

您可以使用outer函数从函数生成矩阵:

fn3d <- function(x,y) x^2-y^2
persp(outer(seq(-10,10,length=30),seq(-10,10,length=30),fn3d))

看看?persp,那里有很多例子。如果您想要交互式3D绘图,请考虑安装包rgl

答案 2 :(得分:0)

网格包中的线框和水平图函数使用像gnuplot这样的数据格式,而不是需要矩阵。