
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
またはフラグを使用)。または、仮想フレームバッファーを使用してみることもできます。-Y
ssh
詳細については、この Stack Overflow の質問を参照してください。X11 のないサーバーで R を実行し、依存関係の破損を回避する方法。