我正在尝试让 R 在 UNIX 中做一些非常基本的绘图等,但是出现了与 X11 相关的奇怪错误,而据我所知我甚至不需要 X11。
我有一个矩阵名称d
,并且想要保存此矩阵的热图图像,但实际上并不显示该图像(因为我不想使用 X11)。这是我的代码:
png(file="my_image.png")
heatmap(d)
dev.off()
问题是我收到以下错误:
Error in X11(paste("png::", filename, sep = ""), g$width, g$height, pointsize, :
unable to start device PNG
此外:警告信息:
In png(file = "interative_hen.png") :
unable to open connection to X11 display ''
我不知道这是怎么回事,因为我不知道 R 为什么需要 X11,而且即使需要,X11 也已安装并且在我测试过的每个应用程序中正常运行。
答案1
首先,检查R
您使用的版本是否具有 PNG 功能。您可以通过capabilities()
从提示符中调用该函数来执行此操作R
。它应该打印出类似于以下内容的列表:
> capabilities()
jpeg png tiff tcltk X11 aqua http/ftp sockets
FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE
libxml fifo cledit iconv NLS profmem cairo
TRUE TRUE TRUE TRUE TRUE FALSE FALSE
如果您看到FALSE
,png
则需要手动重新编译R
以显式支持 PNG。只要您安装了必要的构建依赖项,构建过程就会自动启用 PNG 功能。
最后,假设集群上没有运行本地 X 服务器,您的 SSH 客户端可能配置不正确 - 具体来说,请确保您已启用 X11 转发(如果您使用的是类 UNIX工具,请使用-X
或标志)。或者,您可以尝试使用虚拟帧缓冲区。-Y
ssh
有关详细信息,请参阅此 Stack Overflow 问题:如何在没有 X11 的服务器上运行 R 并避免依赖关系中断。