
我試圖讓 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
有關詳細信息,請參閱此堆疊溢位問題:如何在沒有 X11 的伺服器上執行 R,並避免損壞的依賴關係。