【发布时间】: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 谢谢,我已经更新了我之前的问题