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


111

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

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)

1
あなたは、あなたが抱えている病気を示す再現可能な例を私たちに提供する必要があります。stackoverflow.com/questions/12765668/...
ローマLuštrik

上記のすべてを試しましたが、何もうまくいきませんでした。ただし、たまに(少なくとも私のような初心者の場合)、matrixまたはdata.frameのデータが、知らない種類の型に強制変換されている可能性があります。その場合は、データの前に「as.numeric」を使用して、これが問題でないことを確認してください。
pApaAPPApapapa 2017

回答:


85

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

問題の原因となっている行の前に、次のことを試してください。

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)

ああ、説明してくれてありがとう。代わりに、layout(matrix())を操作していました。ヘルプに感謝します!
Steve Hwang

2
これは私にとって正しいヒントでした。画像サイズを大きくするか、解像度を下げなければなりpng(filename="myfile.png", res=150, width = 1000, height = 1000)
ませんでし

146

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


8
これは私の問題を解決しました!「環境」ウィンドウを拡大し、「プロット」などのウィンドウを縮小しました。ウィンドウを広げるだけです。ありがとうございました!
ロックリー

これは私のRStudioにも影響し、ウィンドウを拡大するだけで効果があることに同意しました。
Kingz

ときどき、par()を使用するために、誤って複数のペインが表示されることがあります。par(mfrow=c(1,1))1つのペインにリセットできます。
マット

1
私はRを初めて使用するので、それは私にとって非常に奇妙なエラーでした。IDEレイアウトがコードに影響を与える他の言語/ IDEでこれまで何の問題もありませんでした。
Adarsha 2016

すごい、これも私にとってはうまくいきました。しかし、そのような奇妙なエラー!
Mohammad

70

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

ここに画像の説明を入力してください


1
これが最良の答えです。
NewbieDave 2016

15
graphics.off()
rawr 2016年

私はこの回答が好き
O.rka

これは本当に最良の答えです。ありがとう。
mervebıçakçı2016

24

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

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 

1
これは、より大きなモニターを購入するよりも良い答えです。Linuxで機能するx11()コマンドもあります。
ロンジェンセン-私たちは全員モニカ

1
これまでで最も適切な答え。ありがとう。
TeeKea 2018年

MacOSXに相当するものはありますか?
TeYaP

Error in plot.new() : figure margins too largeOLS-CUSUMを描画するときにRStudioでエラーが発生したときにこの解決策を試しましたが、奇跡的に機能しました。jobligadoに感謝します。
Erdogan CEVHER

19

R Studioでこのエラーが発生し、端をクリックして右から左にドラッグしてサイドバーを大きくするだけで修正されました。


2
これが勝者でした。なぜこれも事なのですか?
コリン

2
これを除いて、他の解決策はどれも私にとってうまくいきませんでした。
zsad512 2017年

1
方法や理由がわかりませんが、これも私にとって有効な唯一の解決策でした。
TheSciGuy

10

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


これは私のために(Rstudioでpng()/ dev.off()を使用して)行いました。
ノワ2015年

5

ここに画像の説明を入力してください

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


3

今日、このエラーを見つけました。最初は、.jpeg幅と高さが低いファイルに出力しようとしていました。

jpeg("method1_test.jpg", width=900, height=900, res=40)

その後、幅と高さを次のように増やしました。

jpeg("method1_test.jpg", width=1900, height=1900, res=40)

エラーはありませんでした。:)

解像度で遊ぶこともできます。解像度が高い場合は、幅と高さを増やす必要があります。



2

私はこのエラーに数週間も苦労しました(RStudioを使用)。プロットウィンドウを大きくしたり小さくしたりしようとしましたが、それでも一貫して役に立ちませんでした。アプリケーションを大きなモニターに移動(ドラッグ)すると、問題は解消しました。私はびっくりしました...とても多くの時間を浪費しました...私のコードが正しいことを知っていました...


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)
    ```

0

今日も同じエラーが見つかりました。「すべてのプロットをクリア」ボタンを試しましたが、同じエラーが発生しました。次に、このトリックがうまく いきました。ドラッグしてプロット領域を増やしてみてください。それは確かにあなたを助けます。


0

[すべてのプロットをクリア]を使用してから、もう一度plotコマンドを実行すると、役に立ちました。


1
SOへようこそ。これが答えである理由を説明してください。
マイクプール

0

マージンが低い場合は、新しいプロットデバイスから始めることをお勧めします。

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

対処できない大きなものをプロットしない限り、マージンエラーは発生しません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.