【问题标题】:Help in using rgl package使用 rgl 包的帮助
【发布时间】:2011-03-02 10:32:52
【问题描述】:

我安装了带有选项--disable-libpng 的rgl 包。我尝试生成 3d 散点图,但它崩溃了。请帮我解决这个问题

这是我正在运行的代码

library(rgl)
open3d()
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))

它会因以下消息而崩溃

 *** caught segfault ***
address (nil), cause 'memory not mapped'

Traceback:
 1: .External(rgl_par3d, args)
 2: par3d(skip)
 3: plot3d.default(x, y, z, col = rainbow(1000))
 4: plot3d(x, y, z, col = rainbow(1000))

Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection:

这是来自 sessionInfo() 的信息

    > sessionInfo()
R version 2.11.1 (2010-05-31)
x86_64-unknown-linux-gnu

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=C
 [5] LC_MONETARY=C              LC_MESSAGES=en_US.UTF-8
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

other attached packages:
[1] rgl_0.92.798

这是来自 sysname 命令

x86-64_linux_2.6.16_ImageSLES10SP3-3

更多信息:

我能够从R: Plotting a 3D surface from x, y, z 中的一些代码生成曲面图

这里是代码

x <- seq(-10, 10, length.out = 50)
y <- x
rotsinc <- function(x,y) {
    sinc <- function(x) {
        y <- sin(x)/x;
        y[is.na(y)] <- 1;
        y
    }
    10 * sinc( sqrt(x^2+y^2) )
}
z <- outer(x, y, rotsinc)

surface3d(x, y, z)

我尝试了 demo(rgl),但它也因类似的消息而崩溃。我想生成 3d 绘图,你推荐哪个其他包? ggplot?

【问题讨论】:

  • 这是一个错误,您应该向package author 报告。
  • 有可能,但可能是安装错误,请报告您的操作系统(和版本)、R版本和rgl的包版本:在library(rgl)之后sessionInfo()是好的
  • 这是一个相对较旧的 R 版本,请尝试升级到 R 2.12.2 - 如果仍然存在问题,并且据说您的设置受支持,那么您需要向rgl 维护者
  • @Dirk Eddelbuettel 谢谢,我已经更新了我之前的问题

标签: r rgl


【解决方案1】:

rgl 软件包通过其驱动程序在您的显卡中使用可能的硬件加速。

不幸的是,这完全取决于驱动程序。多年来,我一直在使用rgl 进行动画可视化——参见例如this visualization of option analytics surfaces from 2005——我可以保证你在某些机器上无缘无故地崩溃并在其他机器上运行。在做出任何确定的结论之前,您确实应该在具有不同驱动程序的不同机器上进行尝试。

计算机使用硬件,有时硬件会咬人。我可以在我的一台机器上很好地编写您的代码。另一个是双屏,因此没有 GL 扩展,所以它不会。我提到过硬件问题吗?

【讨论】:

  • 它是否也会发生,就像它有时在同一台机器上完美运行但有时在同一台机器上崩溃一样?因为我能够生成一个情节而无法生成其他的
  • 如果是不同的绘图函数、代码或数据,那么您的逻辑可能有错误。尝试重新运行相同的功能。尝试运行软件包随附的demo() 插图。
【解决方案2】:

我在我的系统上测试了完全相同的代码,它运行良好。

无论是什么问题,它们都可能已经解决了。

测试 1:

library(rgl)
demo(rgl)

测试 2:

library(rgl)
open3d()
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))

我的系统是运行 R v2.14.2 的 Windows 7 x64。在两个 IDE 下测试,即 Revolution R 和 RStudio。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2018-07-17
    • 2017-04-26
    • 2011-04-26
    • 2011-07-12
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多