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)

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)

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!


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


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

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.


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.


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.


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.



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 ...


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

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.


0

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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.