我最近开始使用R语言,现在我的大多数2d绘图都使用R。现在,我想使用R来生成3d图。我有来自工具的x,y,z数据,直到现在我在gnuplot中使用splot来生成曲面图。我想使用R来生成一个类似于gnuplot中的splot的曲面图。我看到的问题是,生成3d图R需要数据为矩阵格式,而我的数据不是这种格式。我的问题是,如果gnuplot能够从数据中生成一个图,为什么R不能这样做。我肯定我漏掉了什么,请帮帮我
这是来自gnuplot的图
这就是数据
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
发布于 2011-03-08 00:59:05
我是raster
包的粉丝,这已经不是什么秘密了。它附带了一个使用rgl
包的plot方法。这些图像可能相当令人眼花缭乱。
这是来自?raster::plot3D
的示例
编辑
下面是一个如何使用三列矩阵绘制曲面的示例。这个例子看起来像是致命战斗中的死亡陷阱。如果你正在寻找内核平滑,那么它本身就值得一问。
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)
发布于 2011-03-07 22:24:41
您可以使用outer
函数从函数生成矩阵:
fn3d <- function(x,y) x^2-y^2
persp(outer(seq(-10,10,length=30),seq(-10,10,length=30),fn3d))
看看?persp
,那里有很多例子。如果要进行交互式三维打印,请考虑安装软件包rgl
。
发布于 2011-03-08 01:27:01
晶格包中的线框和水平图函数使用像gnuplot一样的数据格式,而不需要矩阵。
https://stackoverflow.com/questions/5220283
复制相似问题