web-dev-qa-db-ja.com

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が必要な場合でも、X11がインストールされ、テストしたすべてのアプリケーションで正しく機能します。

6
jake9115

まず、使用している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を実行し、依存関係の破損を回避する方法

5
Breakthrough