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が必要な場合でも、X11がインストールされ、テストしたすべてのアプリケーションで正しく機能します。
まず、使用しているR
のバージョンにPNG機能があるかどうかを確認します。これを行うには、R
プロンプトからcapabilities()
関数を呼び出します。次のようなリストが出力されます。
> 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転送が有効になっていることを確認してください(使用している場合は-X
または-Y
フラグを使用) UNIXライクなssh
ツール)。または、仮想フレームバッファーを使用してみることもできます。
詳細については、このStack Overflowの質問を参照してください: X11のないサーバーでRを実行し、依存関係の破損を回避する方法 。