123

私は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)
4

14 に答える 14

162

このエラーは、単に「プロット」ペインが小さすぎるために、Rstudio で発生する可能性があります。「ファイル、プロット、パッケージ、ヘルプ、ビューア」をズームしてみて、役立つかどうかを確認してください!

于 2014-09-05T18:46:43.027 に答える
92

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

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

RStudioユーザーは、[プロット]タブが小さすぎて余白やプロット領域などを含めるのに十分なスペースを残せない場合に、このエラーが発生する可能性があります。これは、そのペインの物理サイズがグラフィックデバイスのサイズであるためです。これらは独立した問題ではありません。RStudioのプロットペインは、、、、、などの単なる別のプロット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)
于 2012-10-07T08:38:16.523 に答える
72

RStudio でこのメッセージが表示された場合は、[プロット] タブで「ほうき」の図の [すべてのプロットをクリア] をクリックして、再度 plot() を試行するとうまくいく場合があります。

ここに画像の説明を入力

于 2015-08-26T00:28:40.783 に答える
27

これは、RStudio で時々発生します。それを解決するために、外部ウィンドウへのプロットを試みることができます (Windows のみ):

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 
于 2016-03-18T17:55:13.247 に答える
10

オブジェクトがリストかベクトルかを確認してください。これを行うには、次のように入力しis.list(yourobject)ます。これが当てはまる場合は、名前を変更してみてくださいx<-unlist(yourobject)。これにより、プロットできるベクトルになります。

于 2013-06-12T19:50:29.640 に答える
5

ここに画像の説明を入力

RStudio を使用している場合は、この領域をズームしてください。

于 2016-04-27T17:42:17.447 に答える
2

高次元データをプロットしようとしたときに、このエラーが発生しました。それがあなたに起こっていることである場合は、多次元スケーリングを試してください: http://www.statmethods.net/advstats/mds.html

于 2013-06-20T17:34:32.793 に答える
1

マージンが低い場合は、常に新しいプロッティング デバイスで開始することをお勧めします。

dev.new()
# plot()
# save your plot
dev.off()

対応できないほど大きなものをプロットしない限り、マージン エラーが発生することはありません。

于 2020-03-11T21:20:17.243 に答える
0

RStudio Plots キャンバスは、プロットの幅と高さを制限しています。ただし、Rmarkdownコードチャンクからプロットを作成すると、用紙サイズに応じてプロット領域が設定されるため、キャンバスフィールドの制限なしで動作します.

例えば:

    ```{r}
#inside of code chunk in Rmarkdown
        grid <- par(mfrow=c(4, 5))
        plot(faithful, main="Faithful eruptions")
        plot(large.islands, main="Islands", ylab="Area")
        ...
        par(grid)
    ```
于 2016-01-29T04:15:54.610 に答える