【问题标题】:Surface plot in R similar to the one from gnuplotR 中的曲面图类似于 gnuplot 中的曲面图
【发布时间】:2011-03-08 15:15:23
【问题描述】:

我最近开始使用 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

【问题讨论】:

  • 如果您描述您当前的数据格式,这将有所帮助,最好是一个可重复的小示例。另外,您使用哪个 R 函数来绘制数据?
  • 有许多用于绘制曲面的函数。编辑您的问题,可能带有您想要生成的图表类型的链接或图像。在等待文件上传的同时,看看addictedtor.free.fr/graphiques/thumbs.php?sort=package 是否有任何有用的信息。

标签: r gnuplot


【解决方案1】:

我是raster 包的粉丝,这已经不是什么秘密了。它带有一个使用rgl 包的绘图方法。这些图像可能会让人眼花缭乱。

这是来自?raster::plot3D 的示例

编辑

这是一个如何使用三列矩阵绘制曲面的示例。这个例子看起来像 Mortal Combat 中的舞台死亡陷阱。如果您正在寻找内核平滑,那么这值得自己提出问题。

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)

【讨论】:

  • 这看起来很不错,希望它不需要矩阵形式的数据。我会试试这个,我对 rgl 包 (stackoverflow.com/questions/5166175/help-in-using-rgl-package) 有一些问题,不确定它是否适合我。当数据不是矩阵格式时,是否有任何其他包用于生成曲面图?
  • 您可以直接使用rgl::surface3d。它接受您在问题中描述的数据类型(三列矩阵)。
  • surface3d 还需要每个网格点的 z 矩阵,我收到上述数据 y 长度的错误!= x rows * z cols
  • 我对 plot3d 函数有一些问题:( stackoverflow.com/questions/5166175/help-in-using-rgl-package
【解决方案2】:

您可以使用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

【讨论】:

  • 数据生成器是模拟工具,我没有功能
  • @Aki 你这里只有几个数据点。似乎情节的其余部分充满了 gnuplot 中的插值平面。您可能需要考虑它是否适合表示数据。
  • 实际点数以百万为单位,例如我拿几个数据点的目的
【解决方案3】:

lattice 包中的线框和水平图函数使用类似于 gnuplot 的数据格式,而不需要矩阵。

【讨论】:

    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多