我使用选项--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: 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)
我尝试了演示(rgl),同样也崩溃了类似的消息。我想生成3d图,你推荐其他包吗? ggplot?
答案 0 :(得分:3)
rgl软件包通过其驱动程序在显卡中使用可能的硬件加速。
不幸的是,这完全取决于司机。多年来我一直在使用rgl进行动画可视化 - 例如this visualization of option analytics surfaces from 2005 ---我可以保证你在某些机器上没有任何理由而在其他机器上运行并且在其他机器上运行。在做出任何确定的结论之前,你真的应该尝试使用不同驱动程序的不同机器。
计算机使用硬件,有时使用硬件。我可以在我的一台机器上使用你的代码。另一个是双屏幕,因此没有GL扩展,所以它不会。我提到硬件咬了吗?
答案 1 :(得分: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。