Fehler in plot.new (): Bildränder in R zu groß

111

Ich bin neu in R, habe aber zahlreiche Korrelationsdiagramme mit kleineren Datensätzen erstellt. Wenn ich jedoch versuche, einen großen Datensatz (2 GB +) zu zeichnen, kann ich den Plot problemlos erstellen, aber die Legende wird nicht angezeigt. Irgendein Rat? oder Alternativen?

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)     

Fehler in plot.new(): Bildränder zu groß

tmp <- round(leg,2)
axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)
Steve Hwang
quelle
1
Sie sollten uns ein reproduzierbares Beispiel geben, das zeigt, welche Krankheiten Sie haben. stackoverflow.com/questions/12765668/…
Roman Luštrik
Ich habe alles versucht und nichts hat funktioniert. Ab und zu (zumindest für einen Neuling wie mich) können die Daten in einer Matrix oder einem data.frame jedoch zu einem Typ gezwungen worden sein, den Sie nicht kannten. Verwenden Sie in diesem Fall "as.numeric" vor Ihren Daten, um sicherzustellen, dass dies nicht das Problem ist.
pApaAPPApapapa

Antworten:

84

Ich vermute das Problem ist, dass die kleine Figur Region 2 von Ihnen erstellt layout() Anruf nicht groß genug ist, um nur die Standardränder zu enthalten, geschweige denn einen Plot.

Versuchen Sie vor der Leitung, die das Problem verursacht, Folgendes:

par(mar = rep(2, 4))

Zeichnen Sie dann das zweite Bild

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

Sie müssen mit der Größe der Ränder auf der Seite herumspielen par() Anrufs ich zeige, um dies richtig zu machen. Möglicherweise müssen Sie auch die Größe des tatsächlichen Geräts erhöhen, auf dem Sie zeichnen.

Ein letzter Tipp: Speichern Sie die par()Standardeinstellungen, bevor Sie sie ändern. Ändern Sie Ihren vorhandenen par()Anruf in:

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

dann am Ende des Plots tun

par(op)
Gavin Simpson
quelle
Ah, danke für die Klarstellung. Ich habe stattdessen das Layout (matrix ()) manipuliert. Schätzen Sie die Hilfe!
Steve Hwang
2
Das war der richtige Hinweis für mich. Ich musste die Bildgröße erhöhen oder die Auflösung inpng(filename="myfile.png", res=150, width = 1000, height = 1000)
vanao veneri
146

Dieser Fehler kann in Rstudio auftreten, weil Ihr Bereich "Plots" kaum zu klein ist. Versuchen Sie, Ihre "Dateien, Diagramme, Pakete, Hilfe, Viewer" zu zoomen und sehen Sie, ob es hilft!

Steve Pitchers
quelle
8
Das hat mein Problem gelöst! Ich hatte das Fenster "Umgebung" erweitert und das Fenster "Diagramme" usw. verkleinert. Ich musste nur das Fenster erweitern. Danke dir!
Rock Lee
Einverstanden, dies wirkte sich auch auf mein RStudio aus, und nur das Erweitern des Fensters half.
Kingz
Manchmal habe ich versehentlich mehrere Fenster, weil ich par () verwende. par(mfrow=c(1,1))kann Sie auf einen Bereich zurücksetzen.
Matt
1
Es war ein sehr seltsamer Fehler für mich, da ich neu bei R bin. Ich hatte noch nie zuvor Probleme mit anderen Sprachen / IDE, bei denen das IDE-Layout meinen Code beeinflusst !!
Adarsha
Super, das hat auch bei mir funktioniert. Was für ein seltsamer Fehler!
Mohammad
70

Wenn Sie diese Meldung in RStudio erhalten, können Sie auf die Registerkarte "Besenstiel" (Alle Plots löschen) auf der Registerkarte "Plots" klicken und plot () erneut versuchen.

Geben Sie hier die Bildbeschreibung ein

Genauso wie
quelle
1
Dies ist die beste Antwort.
NewbieDave
15
graphics.off()
rawr
Ich mag diese Antwort
O.rka
Das ist wirklich die beste Antwort. Vielen Dank.
Merve Bıçakçı
24

Dies passiert manchmal in RStudio. Um es zu lösen, können Sie versuchen, in ein externes Fenster zu zeichnen (nur Windows):

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 
jobligado
quelle
1
Dies ist eine bessere Antwort als der Kauf eines größeren Monitors. Es gibt auch einen x11 () -Befehl, der unter Linux funktionieren sollte.
Ron Jensen - Wir sind alle Monica
1
Die passendste Antwort aller Zeiten. Vielen Dank.
TeeKea
Gibt es ein Äquivalent für MacOSX?
TeYaP
Ich habe diese Lösung ausprobiert, wenn Error in plot.new() : figure margins too largebeim Zeichnen von OLS-CUSUM eine Fehlermeldung in RStudio auftritt, und sie hat auf wundersame Weise funktioniert. Vielen Dank jobligado.
Erdogan CEVHER
19

Ich habe diesen Fehler in R Studio erhalten und wurde einfach behoben, indem die Seitenleiste durch Klicken und Ziehen von rechts nach links vergrößert wurde.

Janac Meena
quelle
2
Das war der Gewinner. Warum ist das überhaupt eine Sache?
Colin
2
Keine der anderen Lösungen hat für mich funktioniert, außer dieser.
Zsad512
1
Ich weiß nicht wie oder warum, aber dies war auch die einzige Lösung, die für mich funktioniert hat.
TheSciGuy
10

Überprüfen Sie, ob Ihr Objekt eine Liste oder ein Vektor ist. Geben Sie dazu Folgendes ein is.list(yourobject). Wenn dies zutrifft, versuchen Sie es umzubenennen x<-unlist(yourobject). Dadurch wird es zu einem Vektor, den Sie zeichnen können.

Gina-Maria
quelle
Dies hat es für mich getan (mit png()/ dev.off()in Rstudio).
Knowah
5

Geben Sie hier die Bildbeschreibung ein

Zoomen Sie diesen Bereich einfach, wenn Sie RStudio verwenden.

vkalit
quelle
3

Ich habe diesen Fehler heute gefunden. Anfangs habe ich versucht, es in eine .jpegDatei mit geringer Breite und Höhe auszugeben .

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

Später erhöhte ich die Breite und Höhe auf:

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

Der Fehler war nicht da. :) :)

Sie können auch mit der Auflösung spielen. Wenn die Auflösung hoch ist, benötigen Sie mehr Breite und Höhe.

Jaikamal
quelle
2

Ich hatte wochenlang mit diesem Fehler zu kämpfen (mit RStudio). Ich habe versucht, das Handlungsfenster größer und kleiner zu bewegen, aber das hat nicht immer geholfen. Als ich die Anwendung auf meinen größeren Monitor verschoben (gezogen) habe, ist das Problem verschwunden! Ich war fassungslos ... so viele verschwendete Stunden ... Ich wusste, dass mein Code korrekt war ...

Liz
quelle
0

Die Leinwand von RStudio Plots begrenzt die Breite und Höhe des Plots. Allerdings, wenn Sie Ihre Handlung von Rmarkdown machen erstellen, funktioniert dies ohne Einschränkung des Canvas-Felds, da der entsprechend der Papiergröße festgelegt wird.

Zum Beispiel:

    ```{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)
    ```
Suat Atan PhD
quelle
0

Ich habe heute den gleichen Fehler gefunden. Ich habe versucht, die Schaltfläche "Alle Diagramme löschen" zu verwenden, aber es gab mir den gleichen Fehler. Dann hat dieser Trick bei mir funktioniert. Versuchen Sie, die Plotfläche durch Ziehen zu vergrößern. Es wird Ihnen sicher helfen.

Dhruv Panchal
quelle
0

Ich habe gerade den Befehl Alle Plots löschen verwendet und dann erneut den Plot-Befehl gegeben, und er war hilfreich

Nirmal Kumar
quelle
1
Willkommen bei SO. Bitte erklären Sie, warum dies die Antwort ist.
Mike Poole
0

Wenn der Spielraum niedrig ist, ist es immer besser, mit einem neuen Plotgerät zu beginnen:

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

Sie werden niemals einen Margin-Fehler erhalten, es sei denn, Sie zeichnen etwas Großes, das nicht berücksichtigt werden kann.

Neeraj
quelle