R でプロットを PNG ファイルにレンダリングするときに問題が発生するのはなぜですか?

R でプロットを PNG ファイルにレンダリングするときに問題が発生するのはなぜですか?

UNIX で R を使用して非常に基本的なプロットなどを実行しようとしているのですが、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

まず、使用している のバージョンに PNG 機能があるかどうかを確認します。これは、プロンプトから関数Rを呼び出すことによって実行できます。次のようなリストが出力されるはずです。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、明示的な PNG サポートを使用して手動で再コンパイルする必要がありますR。必要なビルド依存関係をインストールしておけば、ビルド プロセスによって PNG 機能が自動的に有効になります。


最後に、クラスター上でローカル X サーバーが実行されていない場合、SSH クライアントが適切に構成されていない可能性があります。具体的には、X11 転送が有効になっていることを確認してください ( UNIX のようなツールを使用している場合は、-Xまたはフラグを使用)。または、仮想フレームバッファーを使用してみることもできます。-Yssh

詳細については、この Stack Overflow の質問を参照してください。X11 のないサーバーで R を実行し、依存関係の破損を回避する方法

関連情報