1. ホーム
  2. r

[解決済み] plot.new() のエラー : R では図の余白が大きすぎます。

2022-08-10 02:30:29

質問

私はRの初心者ですが、小さなデータセットで多数の相関プロットを作りました。しかし、大きなデータセット(2gb以上)をプロットしようとすると、プロットはうまく作れますが、凡例が表示されません。何かアドバイスや代替案はありますか?

library(gplots)
r.cor <- cor(r)
layout(matrix(c(1,1,1,1,1,1,1,1,2,2), 5, 2, byrow = TRUE))
par(oma=c(5,7,1,1))
cx <- rev(colorpanel(25,"yellow","black","blue"))
leg <- seq(min(r.cor,na.rm=T),max(r.cor,na.rm=T),length=10)
image(r.cor,main="Correlation plot Normal/Tumor data",axes=F,col=cx)
axis(1, at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]], 
    cex.axis=0.9,las=2)
axis(2,at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]],
     cex.axis=0.9,las=2)
image(as.matrix(leg),col=cx,axes=T)     

のエラー plot.new() : 図の余白が大きすぎます

tmp <- round(leg,2)
axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)

どのように解決するのですか?

問題は、あなたが作成した小さな図形領域2が layout() によって作成された小さな図領域 2 は、プロットはおろか、デフォルトのマージンだけを含むには十分に大きくないということです。

より一般的には、デバイス上のプロット領域のサイズが、実際にプロットを行うのに十分大きくない場合にこのエラーが発生します。OPのケースの場合、問題はすべてのサブプロットとそのマージンを含むにはプロッティングデバイスが小さすぎることでした。 は描画するのに十分な大きさのプロット領域を残しています。

RStudio ユーザーは、プロットタブが小さすぎて、マージンやプロット領域などを含むのに十分なスペースを残していない場合、このエラーが発生することがあります。これは、そのペインの物理的なサイズがグラフィックデバイスのサイズであるためです。これらは独立した問題ではなく、RStudio の plot pane は単なるプロットデバイスで png() , pdf() , windows() そして X11() .

解決方法は以下の通りです。

  1. これは、特に、OP の場合のように、同じデバイス上で複数のプロットを描こうとしている場合に役立つかもしれません。

  2. デバイスの物理的な寸法を大きくする。 png() , pdf() など)、またはデバイスを含むウィンドウ/ペインのサイズを変更することで、デバイスを表示することができます。

  3. 余白のサイズなどを制御できるように、プロット上のテキストのサイズを縮小する。

余白のサイズを小さくする

問題が発生している行の前に、試してみてください。

par(mar = rep(2, 4))

次に、2番目の画像をプロットします。

image(as.matrix(leg),col=cx,axes=T)

の余白の大きさを調整する必要があります。 par() を呼び出す必要があります。

サイズを大きくする

プロットする実際のデバイスのサイズを大きくする必要があるかもしれません。

最後のヒントとして par() のデフォルトを保存してから変更することです。 par() の呼び出しを変更します。

op <- par(oma=c(5,7,1,1))

で、プロット終了時に

par(op)