使用rgl包的帮助

6
我使用选项--disable-libpng安装了rgl包。我尝试生成一个三维散点图,但程序崩溃了。请帮我解决这个问题。
这是我运行的代码:
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:绘制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?


这更像是一个你应该向软件包作者报告的错误。 - mbq
可能是安装过程中出现了错误,请报告您的操作系统(及版本)、R的版本和rgl包的版本:在library(rgl)之后使用sessionInfo()是很好的。 - mdsumner
2
这是一个相对较旧的R版本,请尝试升级到R 2.12.2 - 如果仍然存在问题,并且您的设置应该得到支持,那么您就有些事情要向rgl维护者报告了。 - mdsumner
@Dirk Eddelbuettel 谢谢,我已经更新了我的之前的问题。 - SAN
2个回答

3

使用rgl包可以通过其驱动程序利用图形卡的可能硬件加速。

不幸的是,这完全取决于驱动程序。我已经使用rgl进行动画可视化多年了--例如,请参见2005年期权分析曲面的此可视化--我可以向您保证,在某些计算机上会出现无法解释的崩溃,而在其他计算机上则可以正常运行。在得出任何结论之前,确实应该在另一台拥有不同驱动程序的计算机上尝试。

计算机使用硬件,有时候硬件会出问题。我可以在我的一台计算机上很好地运行您的代码。另一台计算机具有双屏幕,因此没有GL扩展,因此无法运行。我提到过硬件会出问题吗?


它是否也可能会出现在同一台机器上有时完美运行,有时崩溃的情况?因为我能够生成一个图表,但无法生成其他图表。 - SAN
如果是不同的绘图函数、代码或数据,那么您的逻辑可能存在错误。尝试重新运行相同的函数。尝试运行随包提供的demo()演示。 - Dirk Eddelbuettel

1

我在我的系统上测试了完全相同的代码,它完美地工作了。

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

测试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。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接