为什么 R 无法将图表渲染为 PNG 文件?

为什么 R 无法将图表渲染为 PNG 文件?

我正在尝试让 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 

如果您看到FALSEpng则需要手动重新编译R以显式支持 PNG。只要您安装了必要的构建依赖项,构建过程就会自动启用 PNG 功能。


最后,假设集群上没有运行本地 X 服务器,您的 SSH 客户端可能配置不正确 - 具体来说,请确保您已启用 X11 转发(如果您使用的是类 UNIX工具,请使用-X或标志)。或者,您可以尝试使用虚拟帧缓冲区。-Yssh

有关详细信息,请参阅此 Stack Overflow 问题:如何在没有 X11 的服务器上运行 R 并避免依赖关系中断

相关内容