為什麼 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 

如果您看到FALSE下面的內容png,那麼您需要R使用明確 PNG 支援手動重新編譯。只要您安裝了必要的建置依賴項,建置過程就會自動啟用 PNG 功能。


最後,假設叢集上沒有執行本機 X 伺服器,您的 SSH 用戶端可能未正確配置 - 具體來說,請確保您已啟用 X11 轉送(如果您使用的是類似 UNIX 的工具,請使用-X或標誌)。或者,您可以嘗試使用虛擬幀緩衝區。-Yssh

有關詳細信息,請參閱此堆疊溢位問題:如何在沒有 X11 的伺服器上執行 R,並避免損壞的依賴關係

相關內容