无法使用神经网络图生成PDF

3
我正在尝试创建神经网络图的硬拷贝图像,但一直失败。如果我尝试创建PNG格式,没有任何输出;如果我尝试生成PDF格式,将得到一个小文件输出,并且无法打开,出现“文件可能已损坏”的错误提示。如果让它在图形窗口中显示,图像会正常显示。
我使用的是OS X(10.7.4)上由Macports构建的2.15.1版本。我目前正在使用以下代码:
library(ALL)
library(neuralnet)
data(ALL)

ALL.pdat <- pData(ALL)
bt <- factor(substring(ALL.pdat$BT,1,1))
all.sds <- apply(exprs(ALL),1,sd)
top.10.sds <- rank(all.sds)>length(all.sds)-10
exprs.top.10 <- as.data.frame(t(exprs(ALL)[top.10.sds,]))
nn.data <- cbind(exprs.top.10, as.numeric(bt))
##  Gene names start with a number, and that causes problems when trying to set up the
##  formula for neuralnet.
col.names <- paste("g", colnames(nn.data), sep = '')
col.names[11] <- "bt"
colnames(nn.data) <- col.names
my.nn <- neuralnet(bt ~ g36108_at + g36638_at + g37006_at + g38096_f_at + g38319_at + g38355_at + g38514_at + g38585_at + g39318_at + g41214_at, nn.data,  hidden = 10, threshold = 0.01)
summary(my.nn)
pdf("./nn-all.pdf")
plot.nn(my.nn)
dev.off()
png("./nn-all.png")
plot.nn(my.nn)
dev.off()

我甚至重新启动了计算机以确保所有内存都被清除,但这并没有帮助解决问题。


1个回答

1

简单可重现的示例:

pdf("test.pdf")
 set.seed(42)
 plot(runif(20),rnorm(20))
 png("test.png")
  set.seed(42)
  plot(runif(20),rnorm(20))
 dev.off()

如果我在我的德语Windows 7上尝试使用Adobe Reader打开PDF文件,我会收到一个非常有用的错误信息,告诉我该文件无法打开,因为它正在被另一个应用程序使用。这个问题可以很容易地解决:
pdf("test.pdf")
 set.seed(42)
 plot(runif(20),rnorm(20))
dev.off() #make sure to close the graphics device
png("test.png")
 set.seed(42)
 plot(runif(20),rnorm(20))
dev.off()

编辑:

问题出在plot.nn上。在该软件包得到修补之前,您需要手动重新定义plot.nn,如此答案所示。


不幸的是,那并没有解决问题。我尝试打开PDF文件时收到的错误信息是“可能已损坏或使用了一种Preview不识别的文件格式。” 没有生成任何PNG文件。 - Mike
记录一下,我可以运行你的示例代码,并且PNG和PDF图表都能够正确生成。 - Mike
我没有访问 ALL 包的权限,但如果我使用 ?plot.nn 中的示例,我就无法重现错误。当您运行代码时,dev.off() 的输出是什么? - Roland
因此,在Linux(RHEL5u4,2.15.0)上运行我的相同代码会出现相同的问题 - PDF文件无法打开(尽管从xpdf中提供了更多有关错误的信息),未生成PNG文件。 - Mike

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